+ int len = p - module_dir + 1;
+ if (!(module_chdir = new_array(char, len))) /* MEMORY LEAK */
+ out_of_memory("rsync_module");
+ strlcpy(module_chdir, module_dir, len);
+ if (!(p = strdup(p + 2)))
+ out_of_memory("rsync_module");
+ clean_fname(module_dir, CFN_COLLAPSE_DOT_DOT_DIRS | CFN_DROP_TRAILING_DOT_DIR);
+ module_dir = p;
+ } else {
+ module_chdir = module_dir;
+ if ((module_dir = strdup("/")) == NULL)
+ out_of_memory("rsync_module");
+ }
+ } else
+ module_chdir = module_dir;