talloc can potentially change the errno
ret = unlink(filename);
if (ret == -1) {
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
- errno = orig_errno;
talloc_free(ctx);
+ errno = orig_errno;
return ret;
}
if (name2[0] != '/') {
name2 = talloc_asprintf(ctx, "%s/%s", ctx->old_wd, name2);
if (name2 == NULL) {
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
}
/* make sure the destination isn't a symlink beforehand */
if (contains_symlink(name2)) {
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
ret = rename(name1, name2);
if (ret == -1) {
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
if (contains_symlink(name2)) {
DEBUG(0,(__location__ ": Possible symlink attack in rename to '%s' - unlinking\n", name2));
unlink(name2);
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
- errno = orig_errno;
talloc_free(ctx);
+ errno = orig_errno;
return ret;
}
ret = rmdir(dirname);
if (ret == -1) {
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
- errno = orig_errno;
talloc_free(ctx);
+ errno = orig_errno;
return ret;
}
ret = fchmod(fd, mode);
if (ret == -1) {
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
- errno = orig_errno;
talloc_free(ctx);
+ errno = orig_errno;
return ret;
}
ret = chmod(filename, mode);
if (ret == -1) {
- errno = saved_errno;
talloc_free(ctx);
+ errno = saved_errno;
return -1;
}
- errno = orig_errno;
talloc_free(ctx);
+ errno = orig_errno;
return ret;
}