diff options
author | Szymon Janc <szymon.janc@tieto.com> | 2013-09-30 15:06:03 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-09-30 21:16:41 +0300 |
commit | cf8a492dfd99563e22b7aa974baf889eb749b19b (patch) | |
tree | dea759ded2b693f493834646007b2c1b2b17c17c /lib/sdp.c | |
parent | c6e0cd59c4f79f26f356ca02515c2d056111fde8 (diff) | |
download | bluez-cf8a492dfd99563e22b7aa974baf889eb749b19b.tar.gz |
lib: Fix use of uninitialized variable in sdp_set_profile_descs
Error path on default case was not breaking loop. To keep error
handling similar all error path were converted to use goto.
This fix following:
target C: libbluetooth <= external/bluetooth/bluez/android/../lib/sdp.c
lib/sdp.c: In function 'sdp_set_profile_descs':
lib/sdp.c:487:10: warning: 'values[0]' may be used uninitialized in
this function [-Wmaybe-uninitialized]
lib/sdp.c:2562:19: note: 'values[0]' was declared here
lib/sdp.c:545:11: warning: 'dtds[0]' may be used uninitialized in this
function [-Wmaybe-uninitialized]
lib/sdp.c:2562:9: note: 'dtds[0]' was declared here
Diffstat (limited to 'lib/sdp.c')
-rw-r--r-- | lib/sdp.c | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -2546,6 +2546,7 @@ int sdp_set_profile_descs(sdp_record_t *rec, const sdp_list_t *profiles) int i = 0, seqlen = sdp_list_len(profiles); void **seqDTDs, **seqs; const sdp_list_t *p; + sdp_data_t *pAPSeq; seqDTDs = malloc(seqlen * sizeof(void *)); if (!seqDTDs) @@ -2563,7 +2564,7 @@ int sdp_set_profile_descs(sdp_record_t *rec, const sdp_list_t *profiles) sdp_profile_desc_t *profile = p->data; if (!profile) { status = -1; - break; + goto end; } switch (profile->uuid.type) { case SDP_UUID16: @@ -2580,7 +2581,7 @@ int sdp_set_profile_descs(sdp_record_t *rec, const sdp_list_t *profiles) break; default: status = -1; - break; + goto end; } dtds[1] = &uint16; values[1] = &profile->version; @@ -2588,7 +2589,7 @@ int sdp_set_profile_descs(sdp_record_t *rec, const sdp_list_t *profiles) if (seq == NULL) { status = -1; - break; + goto end; } seqDTDs[i] = &seq->dtd; @@ -2596,10 +2597,10 @@ int sdp_set_profile_descs(sdp_record_t *rec, const sdp_list_t *profiles) sdp_pattern_add_uuid(rec, &profile->uuid); i++; } - if (status == 0) { - sdp_data_t *pAPSeq = sdp_seq_alloc(seqDTDs, seqs, seqlen); - sdp_attr_add(rec, SDP_ATTR_PFILE_DESC_LIST, pAPSeq); - } + + pAPSeq = sdp_seq_alloc(seqDTDs, seqs, seqlen); + sdp_attr_add(rec, SDP_ATTR_PFILE_DESC_LIST, pAPSeq); +end: free(seqDTDs); free(seqs); return status; |