static bstring str2f = NULL;
static bstring strdot = NULL;
static bstring strcolon = NULL;
+ char *newadpath = NULL;
if (str2e == NULL) {
str2e = bfromcstr(":2e");
EC_ZERO( bfindreplace(newpath, str2f, strcolon, 0) );
become_root();
- if (adflags != ADFLAGS_DIR)
- rename(vol->ad_path(path, 0), vol->ad_path(bdata(newpath), 0));
+ if (adflags != ADFLAGS_DIR) {
+ if ((newadpath = strdup(vol->ad_path(bdata(newpath), 0))) == NULL) {
+ unbecome_root();
+ EC_FAIL;
+ }
+ rename(vol->ad_path(path, 0), newadpath);
+ }
rename(path, bdata(newpath));
unbecome_root();
EC_CLEANUP:
if (newpath)
bdestroy(newpath);
+ if (newadpath)
+ free(newadpath);
EC_EXIT;
}