Coverity fixes.
1398654, 1398656 - lib missing unlock on fatal protocol error 1398655 - broker potential double free on startup after fatal persist error.
This commit is contained in:
parent
463de0a2c1
commit
4490d06a63
@ -6,10 +6,14 @@ Broker:
|
||||
case where a client connects using a username, and the anonymous ACL list is
|
||||
defined but specific user ACLs are not defined. Closes #1162.
|
||||
- Make error messages for missing config file clearer.
|
||||
- Fix some Coverity Scan reported errors that could occur when the broker was
|
||||
already failing to start.
|
||||
|
||||
Library:
|
||||
- Use higher resolution timer for random initialisation of client id
|
||||
generation. Closes #1177.
|
||||
- Fix some Coverity Scan reported errors that could occur when the library was
|
||||
already quitting.
|
||||
|
||||
|
||||
1.5.7 - 20190213
|
||||
|
@ -232,6 +232,7 @@ int message__remove(struct mosquitto *mosq, uint16_t mid, enum mosquitto_msg_dir
|
||||
while(cur){
|
||||
if(cur->msg.mid == mid){
|
||||
if(cur->msg.qos != qos){
|
||||
pthread_mutex_unlock(&mosq->out_message_mutex);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
}
|
||||
if(prev){
|
||||
@ -291,6 +292,7 @@ int message__remove(struct mosquitto *mosq, uint16_t mid, enum mosquitto_msg_dir
|
||||
while(cur){
|
||||
if(cur->msg.mid == mid){
|
||||
if(cur->msg.qos != qos){
|
||||
pthread_mutex_unlock(&mosq->in_message_mutex);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
}
|
||||
if(prev){
|
||||
@ -386,6 +388,7 @@ int message__out_update(struct mosquitto *mosq, uint16_t mid, enum mosquitto_msg
|
||||
while(message){
|
||||
if(message->msg.mid == mid){
|
||||
if(message->msg.qos != qos){
|
||||
pthread_mutex_unlock(&mosq->out_message_mutex);
|
||||
return MOSQ_ERR_PROTOCOL;
|
||||
}
|
||||
message->state = state;
|
||||
|
@ -124,7 +124,9 @@ int config__get_dir_files(const char *include_dir, char ***files, int *file_coun
|
||||
|
||||
FindClose(fh);
|
||||
|
||||
qsort(l_files, l_file_count, sizeof(char *), scmp_p);
|
||||
if(l_files){
|
||||
qsort(l_files, l_file_count, sizeof(char *), scmp_p);
|
||||
}
|
||||
*files = l_files;
|
||||
*file_count = l_file_count;
|
||||
|
||||
@ -184,7 +186,9 @@ int config__get_dir_files(const char *include_dir, char ***files, int *file_coun
|
||||
}
|
||||
closedir(dh);
|
||||
|
||||
qsort(l_files, l_file_count, sizeof(char *), scmp_p);
|
||||
if(l_files){
|
||||
qsort(l_files, l_file_count, sizeof(char *), scmp_p);
|
||||
}
|
||||
*files = l_files;
|
||||
*file_count = l_file_count;
|
||||
|
||||
|
@ -691,6 +691,7 @@ error:
|
||||
mosquitto__free(temp->topic);
|
||||
mosquitto__free(temp);
|
||||
}
|
||||
UHPA_FREE(*payload, payloadlen);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -175,7 +175,7 @@ static int persist__message_store_write(struct mosquitto_db *db, FILE *db_fptr)
|
||||
}else{
|
||||
tlen = 0;
|
||||
}
|
||||
length = sizeof(dbid_t) + 2+strlen(stored->source_id) +
|
||||
length = sizeof(dbid_t) + sizeof(uint16_t) +
|
||||
sizeof(uint16_t) + sizeof(uint16_t) +
|
||||
2+tlen + sizeof(uint32_t) +
|
||||
stored->payloadlen + sizeof(uint8_t) + sizeof(uint8_t)
|
||||
@ -808,8 +808,6 @@ static int persist__msg_store_chunk_restore(struct mosquitto_db *db, FILE *db_fp
|
||||
}else{
|
||||
mosquitto__free(load);
|
||||
fclose(db_fptr);
|
||||
mosquitto__free(topic);
|
||||
UHPA_FREE(payload, payloadlen);
|
||||
return rc;
|
||||
}
|
||||
error:
|
||||
@ -817,8 +815,6 @@ error:
|
||||
log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
|
||||
fclose(db_fptr);
|
||||
mosquitto__free(source.id);
|
||||
mosquitto__free(topic);
|
||||
UHPA_FREE(payload, payloadlen);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user