# HG changeset patch # User Vadim Lebedev # Date 1311861591 -7200 # Node ID c3d41be5f08d9d3f175425829f1b9c53cff89aea # Parent 8cf35f9d1ab5bad3f958cd8dbabaf2a056989e4e osip COVERITY fixes diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osip2/ict.c --- a/libosip2/src/osip2/ict.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osip2/ict.c Thu Jul 28 15:59:51 2011 +0200 @@ -105,7 +105,7 @@ } } - if (route != NULL) { + if (route != NULL && route->url != NULL) { int port = 5060; if (route->url->port != NULL) diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osip2/nict.c --- a/libosip2/src/osip2/nict.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osip2/nict.c Thu Jul 28 15:59:51 2011 +0200 @@ -99,7 +99,7 @@ } } - if (route != NULL) { + if (route != NULL && route->url != NULL) { int port = 5060; if (route->url->port != NULL) diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_accept.c --- a/libosip2/src/osipparser2/osip_accept.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_accept.c Thu Jul 28 15:59:51 2011 +0200 @@ -131,7 +131,7 @@ len = tmp_len; tmp = buf + strlen(buf); } - sprintf(tmp, "; %s=%s", u_param->gname, u_param->gvalue); + snprintf(tmp, len - (tmp-buf), "; %s=%s", u_param->gname, u_param->gvalue); tmp = tmp + strlen(tmp); pos++; } diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_accept_encoding.c --- a/libosip2/src/osipparser2/osip_accept_encoding.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_accept_encoding.c Thu Jul 28 15:59:51 2011 +0200 @@ -147,9 +147,9 @@ tmp = buf; tmp = tmp + strlen(tmp); if (u_param->gvalue == NULL) - sprintf(tmp, ";%s", u_param->gname); + snprintf(tmp, len - (tmp-buf), ";%s", u_param->gname); else - sprintf(tmp, ";%s=%s", u_param->gname, u_param->gvalue); + snprintf(tmp, len - (tmp-buf), ";%s=%s", u_param->gname, u_param->gvalue); pos++; } } diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_body.c --- a/libosip2/src/osipparser2/osip_body.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_body.c Thu Jul 28 15:59:51 2011 +0200 @@ -87,8 +87,10 @@ copy->body = (char *) osip_malloc(body->length + 2); - if (copy->body == NULL) + if (copy->body == NULL) { + osip_body_free(copy); return OSIP_NOMEM; + } copy->length = body->length; memcpy(copy->body, body->body, body->length); copy->body[body->length] = '\0'; @@ -353,8 +355,10 @@ int i; size_t length; - *dest = NULL; - *str_length = 0; + if (dest) + *dest = NULL; + if (str_length) + *str_length = 0; if (body == NULL) return OSIP_BADPARAMETER; if (body->body == NULL) diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_content_type.c --- a/libosip2/src/osipparser2/osip_content_type.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_content_type.c Thu Jul 28 15:59:51 2011 +0200 @@ -189,7 +189,7 @@ len = tmp_len; tmp = buf + strlen(buf); } - sprintf(tmp, "; %s=%s", u_param->gname, u_param->gvalue); + snprintf(tmp, len - (tmp - buf), "; %s=%s", u_param->gname, u_param->gvalue); tmp = tmp + strlen(tmp); pos++; } @@ -246,7 +246,7 @@ i = osip_generic_param_clone(u_param, &dest_param); if (i != 0) { osip_content_type_free(ct); - osip_free(ct); + //osip_free(ct); return i; } osip_list_add(&ct->gen_params, dest_param, -1); diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_cseq.c --- a/libosip2/src/osipparser2/osip_cseq.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_cseq.c Thu Jul 28 15:59:51 2011 +0200 @@ -143,7 +143,7 @@ *dest = (char *) osip_malloc(len); if (*dest == NULL) return OSIP_NOMEM; - sprintf(*dest, "%s %s", cseq->number, cseq->method); + snprintf(*dest, len, "%s %s", cseq->number, cseq->method); return OSIP_SUCCESS; } diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_from.c --- a/libosip2/src/osipparser2/osip_from.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_from.c Thu Jul 28 15:59:51 2011 +0200 @@ -301,9 +301,9 @@ tmp = buf; tmp = tmp + strlen(tmp); if (u_param->gvalue == NULL) - sprintf(tmp, ";%s", u_param->gname); + snprintf(tmp, len - (tmp-buf), ";%s", u_param->gname); else - sprintf(tmp, ";%s=%s", u_param->gname, u_param->gvalue); + snprintf(tmp, len - (tmp-buf), ";%s=%s", u_param->gname, u_param->gvalue); pos++; } } diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_header.c --- a/libosip2/src/osipparser2/osip_header.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_header.c Thu Jul 28 15:59:51 2011 +0200 @@ -228,24 +228,24 @@ /* returns null on error. */ int osip_header_to_str(const osip_header_t * header, char **dest) { - size_t len; + size_t len, hlen; *dest = NULL; if ((header == NULL) || (header->hname == NULL)) return OSIP_BADPARAMETER; - len = 0; + len = 0; hlen = strlen(header->hname); if (header->hvalue != NULL) len = strlen(header->hvalue); - *dest = (char *) osip_malloc(strlen(header->hname) + len + 3); + *dest = (char *) osip_malloc(hlen + len + 3); if (*dest == NULL) return OSIP_NOMEM; if (header->hvalue != NULL) - sprintf(*dest, "%s: %s", header->hname, header->hvalue); + snprintf(*dest, hlen+len+3, "%s: %s", header->hname, header->hvalue); else - sprintf(*dest, "%s: ", header->hname); + snprintf(*dest, hlen + len + 3, "%s: ", header->hname); if (*dest[0] > 'a' && *dest[0] < 'z') *dest[0] = (*dest[0] - 32); diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_message_to_str.c --- a/libosip2/src/osipparser2/osip_message_to_str.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_message_to_str.c Thu Jul 28 15:59:51 2011 +0200 @@ -804,7 +804,7 @@ char tmp2[15]; total_length += size; - sprintf(tmp2, "%i", size); + snprintf(tmp2, 15, "%i", size); /* do not use osip_strncpy here! */ strncpy(content_length_to_modify + 5 - strlen(tmp2), tmp2, strlen(tmp2)); } diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_record_route.c --- a/libosip2/src/osipparser2/osip_record_route.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_record_route.c Thu Jul 28 15:59:51 2011 +0200 @@ -137,9 +137,9 @@ tmp = buf; tmp = tmp + strlen(tmp); if (u_param->gvalue == NULL) - sprintf(tmp, ";%s", u_param->gname); + snprintf(tmp, len - (tmp-buf), ";%s", u_param->gname); else - sprintf(tmp, ";%s=%s", u_param->gname, u_param->gvalue); + snprintf(tmp, len - (tmp-buf), ";%s=%s", u_param->gname, u_param->gvalue); pos++; } } diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_uri.c --- a/libosip2/src/osipparser2/osip_uri.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_uri.c Thu Jul 28 15:59:51 2011 +0200 @@ -608,9 +608,9 @@ tmp = buf; tmp = tmp + strlen(tmp); if (pos == 0) - sprintf(tmp, "?%s=%s", tmp1, tmp2); + snprintf(tmp, len - (tmp-buf), "?%s=%s", tmp1, tmp2); else - sprintf(tmp, "&%s=%s", tmp1, tmp2); + snprintf(tmp, len - (tmp-buf), "&%s=%s", tmp1, tmp2); osip_free(tmp1); osip_free(tmp2); pos++; diff -r 8cf35f9d1ab5 -r c3d41be5f08d libosip2/src/osipparser2/osip_via.c --- a/libosip2/src/osipparser2/osip_via.c Thu Jul 28 15:18:36 2011 +0200 +++ b/libosip2/src/osipparser2/osip_via.c Thu Jul 28 15:59:51 2011 +0200 @@ -331,7 +331,7 @@ buf = (char *) osip_realloc(buf, len); tmp = buf; tmp = tmp + strlen(tmp); - sprintf(tmp, " (%s)", via->comment); + snprintf(tmp, len - (tmp-buf), " (%s)", via->comment); } *dest = buf; return OSIP_SUCCESS;