fix(config-repl): conf_save_config() must use workdir/name not workdir
load_primary_config() reads from workdir/name/conf — conf_save_config() was writing to workdir/conf. Latent bug: would have corrupted upgrade restart cycle once Task 11 wired the upgrade path. Update all conf_read_current_filename, conf_get_saved_tag, and conf_check_stale calls in the test suite to use the corrected effective_dir (workdir/name) path structure. Add new test test_conf_save_config_path_consistency that explicitly verifies the written path matches what load_primary_config() reads.
This commit is contained in:
parent
86fe35e671
commit
2ed7e34e25
3 changed files with 96 additions and 16 deletions
|
|
@ -231,8 +231,12 @@ int conf_read_current_filename(const char *workdir, char *out, size_t outsz)
|
|||
int conf_save_config(myconf_t *myconf, const uint8_t *bytes, size_t len,
|
||||
const uint8_t sha256[32])
|
||||
{
|
||||
/* effective_dir = workdir/name — must match load_primary_config() path */
|
||||
char effective_dir[4096];
|
||||
snprintf(effective_dir, sizeof(effective_dir), "%s/%s",
|
||||
myconf->workdir, myconf->name);
|
||||
char conf_dir[4096];
|
||||
make_conf_dir(myconf->workdir, conf_dir, sizeof(conf_dir));
|
||||
make_conf_dir(effective_dir, conf_dir, sizeof(conf_dir));
|
||||
|
||||
if (mkdir(conf_dir, 0700) != 0 && errno != EEXIST)
|
||||
return -errno;
|
||||
|
|
@ -303,7 +307,7 @@ int conf_save_config(myconf_t *myconf, const uint8_t *bytes, size_t len,
|
|||
}
|
||||
|
||||
/* Step 3: trim old versions */
|
||||
conf_trim_old_versions(myconf->workdir, myconf->conf_keep_n);
|
||||
conf_trim_old_versions(effective_dir, myconf->conf_keep_n);
|
||||
|
||||
/* Update conffile to the new versioned path (heap-allocated) */
|
||||
free(myconf->conffile);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue