#endif
int safe_write_file(const char *base, const char *file,
- const char *val, size_t vallen)
+ const char *val, size_t vallen,
+ unsigned mode)
{
int ret;
char fn[PATH_MAX];
snprintf(fn, sizeof(fn), "%s/%s", base, file);
snprintf(tmp, sizeof(tmp), "%s/%s.tmp", base, file);
- fd = open(tmp, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+ fd = open(tmp, O_WRONLY|O_CREAT|O_TRUNC, mode);
if (fd < 0) {
ret = errno;
return -ret;
* Safe functions to read and write an entire file.
*/
int safe_write_file(const char *base, const char *file,
- const char *val, size_t vallen);
+ const char *val, size_t vallen,
+ unsigned mode);
int safe_read_file(const char *base, const char *file,
- char *val, size_t vallen);
+ char *val, size_t vallen);
#ifdef __cplusplus
}
std::string v = value;
v += "\n";
if (int r = safe_write_file(path.c_str(), key.c_str(),
- v.c_str(), v.length());
+ v.c_str(), v.length(), 0600);
r < 0) {
throw std::runtime_error{fmt::format("unable to write_meta({})", key)};
}
string v = value;
v += "\n";
int r = safe_write_file(path.c_str(), key.c_str(),
- v.c_str(), v.length());
+ v.c_str(), v.length(),
+ 0600);
if (r < 0)
return r;
return 0;
string v = value;
v += "\n";
int r = safe_write_file(path.c_str(), key.c_str(),
- v.c_str(), v.length());
+ v.c_str(), v.length(), 0600);
if (r < 0)
return r;
return 0;
bufferlist bl;
encode(superblock, bl);
return safe_write_file(basedir.c_str(), "superblock",
- bl.c_str(), bl.length());
+ bl.c_str(), bl.length(), 0600);
}
int FileStore::read_superblock()
encode(target_version, bl);
return safe_write_file(basedir.c_str(), "store_version",
- bl.c_str(), bl.length());
+ bl.c_str(), bl.length(), 0600);
}
int FileStore::upgrade()