Don't use gnu-specific strerror_r.

pull/1029/head
Roger A. Light 7 years ago
parent 34c752a0d0
commit ba67e1ffe5

@ -974,7 +974,11 @@ int client_id_generate(struct mosq_config *cfg, const char *id_base)
int client_connect(struct mosquitto *mosq, struct mosq_config *cfg) int client_connect(struct mosquitto *mosq, struct mosq_config *cfg)
{ {
#ifndef WIN32
char *err;
#else
char err[1024]; char err[1024];
#endif
int rc; int rc;
int port; int port;
@ -1008,7 +1012,7 @@ int client_connect(struct mosquitto *mosq, struct mosq_config *cfg)
if(!cfg->quiet){ if(!cfg->quiet){
if(rc == MOSQ_ERR_ERRNO){ if(rc == MOSQ_ERR_ERRNO){
#ifndef WIN32 #ifndef WIN32
strerror_r(errno, err, 1024); err = strerror(errno);
#else #else
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errno, 0, (LPTSTR)&err, 1024, NULL); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errno, 0, (LPTSTR)&err, 1024, NULL);
#endif #endif

@ -91,7 +91,7 @@ int drop_privileges(struct mosquitto__config *config, bool temporary)
{ {
#if !defined(__CYGWIN__) && !defined(WIN32) #if !defined(__CYGWIN__) && !defined(WIN32)
struct passwd *pwd; struct passwd *pwd;
char err[256]; char *err;
int rc; int rc;
const char *snap = getenv("SNAP_NAME"); const char *snap = getenv("SNAP_NAME");
@ -108,7 +108,7 @@ int drop_privileges(struct mosquitto__config *config, bool temporary)
return 1; return 1;
} }
if(initgroups(config->user, pwd->pw_gid) == -1){ if(initgroups(config->user, pwd->pw_gid) == -1){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error setting groups whilst dropping privileges: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error setting groups whilst dropping privileges: %s.", err);
return 1; return 1;
} }
@ -118,7 +118,7 @@ int drop_privileges(struct mosquitto__config *config, bool temporary)
rc = setgid(pwd->pw_gid); rc = setgid(pwd->pw_gid);
} }
if(rc == -1){ if(rc == -1){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error setting gid whilst dropping privileges: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error setting gid whilst dropping privileges: %s.", err);
return 1; return 1;
} }
@ -128,7 +128,7 @@ int drop_privileges(struct mosquitto__config *config, bool temporary)
rc = setuid(pwd->pw_uid); rc = setuid(pwd->pw_uid);
} }
if(rc == -1){ if(rc == -1){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error setting uid whilst dropping privileges: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error setting uid whilst dropping privileges: %s.", err);
return 1; return 1;
} }
@ -144,19 +144,19 @@ int drop_privileges(struct mosquitto__config *config, bool temporary)
int restore_privileges(void) int restore_privileges(void)
{ {
#if !defined(__CYGWIN__) && !defined(WIN32) #if !defined(__CYGWIN__) && !defined(WIN32)
char err[256]; char *err;
int rc; int rc;
if(getuid() == 0){ if(getuid() == 0){
rc = setegid(0); rc = setegid(0);
if(rc == -1){ if(rc == -1){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error setting gid whilst restoring privileges: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error setting gid whilst restoring privileges: %s.", err);
return 1; return 1;
} }
rc = seteuid(0); rc = seteuid(0);
if(rc == -1){ if(rc == -1){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error setting uid whilst restoring privileges: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error setting uid whilst restoring privileges: %s.", err);
return 1; return 1;
} }
@ -169,12 +169,12 @@ int restore_privileges(void)
void mosquitto__daemonise(void) void mosquitto__daemonise(void)
{ {
#ifndef WIN32 #ifndef WIN32
char err[256]; char *err;
pid_t pid; pid_t pid;
pid = fork(); pid = fork();
if(pid < 0){ if(pid < 0){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error in fork: %s", err); log__printf(NULL, MOSQ_LOG_ERR, "Error in fork: %s", err);
exit(1); exit(1);
} }
@ -182,7 +182,7 @@ void mosquitto__daemonise(void)
exit(0); exit(0);
} }
if(setsid() < 0){ if(setsid() < 0){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error in setsid: %s", err); log__printf(NULL, MOSQ_LOG_ERR, "Error in setsid: %s", err);
exit(1); exit(1);
} }

@ -81,18 +81,16 @@ void net__broker_cleanup(void)
static void net__print_error(int log, const char *format_str) static void net__print_error(int log, const char *format_str)
{ {
#ifdef WIN32
char *buf; char *buf;
#ifdef WIN32
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, WSAGetLastError(), LANG_NEUTRAL, &buf, 0, NULL); NULL, WSAGetLastError(), LANG_NEUTRAL, &buf, 0, NULL);
log__printf(NULL, log, format_str, buf); log__printf(NULL, log, format_str, buf);
LocalFree(buf); LocalFree(buf);
#else #else
char buf[256]; buf = strerror(errno);
strerror_r(errno, buf, 256);
log__printf(NULL, log, format_str, buf); log__printf(NULL, log, format_str, buf);
#endif #endif
} }

@ -356,7 +356,7 @@ int persist__backup(struct mosquitto_db *db, bool shutdown)
uint32_t i32temp; uint32_t i32temp;
uint16_t i16temp; uint16_t i16temp;
uint8_t i8temp; uint8_t i8temp;
char err[256]; char *err;
char *outfile = NULL; char *outfile = NULL;
int len; int len;
@ -477,7 +477,7 @@ int persist__backup(struct mosquitto_db *db, bool shutdown)
return rc; return rc;
error: error:
mosquitto__free(outfile); mosquitto__free(outfile);
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
if(db_fptr) fclose(db_fptr); if(db_fptr) fclose(db_fptr);
return 1; return 1;
@ -596,7 +596,7 @@ static int persist__client_msg_chunk_restore(struct mosquitto_db *db, FILE *db_f
uint8_t qos, retain, direction, state, dup; uint8_t qos, retain, direction, state, dup;
char *client_id = NULL; char *client_id = NULL;
int rc; int rc;
char err[256]; char *err;
read_e(db_fptr, &i16temp, sizeof(uint16_t)); read_e(db_fptr, &i16temp, sizeof(uint16_t));
slen = ntohs(i16temp); slen = ntohs(i16temp);
@ -631,7 +631,7 @@ static int persist__client_msg_chunk_restore(struct mosquitto_db *db, FILE *db_f
return rc; return rc;
error: error:
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
fclose(db_fptr); fclose(db_fptr);
mosquitto__free(client_id); mosquitto__free(client_id);
@ -650,7 +650,7 @@ static int persist__msg_store_chunk_restore(struct mosquitto_db *db, FILE *db_fp
int rc = 0; int rc = 0;
struct mosquitto_msg_store *stored = NULL; struct mosquitto_msg_store *stored = NULL;
struct mosquitto_msg_store_load *load; struct mosquitto_msg_store_load *load;
char err[256]; char *err;
payload.ptr = NULL; payload.ptr = NULL;
@ -734,7 +734,7 @@ static int persist__msg_store_chunk_restore(struct mosquitto_db *db, FILE *db_fp
return rc; return rc;
} }
error: error:
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
fclose(db_fptr); fclose(db_fptr);
mosquitto__free(source_id); mosquitto__free(source_id);
@ -747,10 +747,10 @@ static int persist__retain_chunk_restore(struct mosquitto_db *db, FILE *db_fptr)
{ {
dbid_t i64temp, store_id; dbid_t i64temp, store_id;
struct mosquitto_msg_store_load *load; struct mosquitto_msg_store_load *load;
char err[256]; char *err;
if(fread(&i64temp, sizeof(dbid_t), 1, db_fptr) != 1){ if(fread(&i64temp, sizeof(dbid_t), 1, db_fptr) != 1){
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
fclose(db_fptr); fclose(db_fptr);
return 1; return 1;
@ -773,7 +773,7 @@ static int persist__sub_chunk_restore(struct mosquitto_db *db, FILE *db_fptr)
char *client_id; char *client_id;
char *topic; char *topic;
int rc = 0; int rc = 0;
char err[256]; char *err;
read_e(db_fptr, &i16temp, sizeof(uint16_t)); read_e(db_fptr, &i16temp, sizeof(uint16_t));
slen = ntohs(i16temp); slen = ntohs(i16temp);
@ -807,7 +807,7 @@ static int persist__sub_chunk_restore(struct mosquitto_db *db, FILE *db_fptr)
return rc; return rc;
error: error:
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
fclose(db_fptr); fclose(db_fptr);
return 1; return 1;
@ -824,7 +824,7 @@ int persist__restore(struct mosquitto_db *db)
uint16_t i16temp, chunk; uint16_t i16temp, chunk;
uint8_t i8temp; uint8_t i8temp;
ssize_t rlen; ssize_t rlen;
char err[256]; char *err;
struct mosquitto_msg_store_load *load, *load_tmp; struct mosquitto_msg_store_load *load, *load_tmp;
assert(db); assert(db);
@ -919,7 +919,7 @@ int persist__restore(struct mosquitto_db *db)
} }
return rc; return rc;
error: error:
strerror_r(errno, err, 256); err = strerror(errno);
log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err); log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
if(fptr) fclose(fptr); if(fptr) fclose(fptr);
return 1; return 1;

Loading…
Cancel
Save