mosquitto_passwd uses mkstemp() for backup files.
This commit is contained in:
parent
9bb8058578
commit
44b94875b5
@ -29,6 +29,9 @@ Clients:
|
|||||||
- Fix incorrect topic-alias property value in mosquitto_sub json output.
|
- Fix incorrect topic-alias property value in mosquitto_sub json output.
|
||||||
- Fix confusing message on TLS certificate verification. Closes #2746.
|
- Fix confusing message on TLS certificate verification. Closes #2746.
|
||||||
|
|
||||||
|
Apps:
|
||||||
|
- mosquitto_passwd uses mkstemp() for backup files.
|
||||||
|
|
||||||
|
|
||||||
2.0.15 - 2022-08-16
|
2.0.15 - 2022-08-16
|
||||||
===================
|
===================
|
||||||
|
@ -370,15 +370,27 @@ static int copy_contents(FILE *src, FILE *dest)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int create_backup(const char *backup_file, FILE *fptr)
|
static int create_backup(char *backup_file, FILE *fptr)
|
||||||
{
|
{
|
||||||
FILE *fbackup;
|
FILE *fbackup;
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
fbackup = mosquitto__fopen(backup_file, "wt", true);
|
fbackup = mosquitto__fopen(backup_file, "wt", true);
|
||||||
|
#else
|
||||||
|
int fd;
|
||||||
|
umask(077);
|
||||||
|
fd = mkstemp(backup_file);
|
||||||
|
if(fd < 0){
|
||||||
|
fprintf(stderr, "Error creating backup password file \"%s\", not continuing.\n", backup_file);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
fbackup = fdopen(fd, "wt");
|
||||||
|
#endif
|
||||||
if(!fbackup){
|
if(!fbackup){
|
||||||
fprintf(stderr, "Error creating backup password file \"%s\", not continuing.\n", backup_file);
|
fprintf(stderr, "Error creating backup password file \"%s\", not continuing.\n", backup_file);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(copy_contents(fptr, fbackup)){
|
if(copy_contents(fptr, fbackup)){
|
||||||
fprintf(stderr, "Error copying data to backup password file \"%s\", not continuing.\n", backup_file);
|
fprintf(stderr, "Error copying data to backup password file \"%s\", not continuing.\n", backup_file);
|
||||||
fclose(fbackup);
|
fclose(fbackup);
|
||||||
@ -617,13 +629,13 @@ int main(int argc, char *argv[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_file = malloc((size_t)strlen(password_file)+5);
|
backup_file = malloc((size_t)strlen(password_file)+strlen(".backup.XXXXXX"));
|
||||||
if(!backup_file){
|
if(!backup_file){
|
||||||
fprintf(stderr, "Error: Out of memory.\n");
|
fprintf(stderr, "Error: Out of memory.\n");
|
||||||
free(password_file);
|
free(password_file);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
snprintf(backup_file, strlen(password_file)+5, "%s.tmp", password_file);
|
snprintf(backup_file, strlen(password_file)+5, "%s.backup.XXXXXX", password_file);
|
||||||
free(password_file);
|
free(password_file);
|
||||||
password_file = NULL;
|
password_file = NULL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user