X-Git-Url: http://git.silcnet.org/gitweb/?p=runtime.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcbuffmt.c;h=db798c4040df70e622b7b1c47a1f4fd4367eccfe;hp=838177d183932c0bb5a9fa465d572ca5b1df459c;hb=afcd9ed820b767d8b6676a9156fa561b24ac2363;hpb=2f90e9e57682d83c4ed07df77c1c9b898cbc5702 diff --git a/lib/silcutil/silcbuffmt.c b/lib/silcutil/silcbuffmt.c index 838177d1..db798c40 100644 --- a/lib/silcutil/silcbuffmt.c +++ b/lib/silcutil/silcbuffmt.c @@ -781,7 +781,8 @@ int silc_buffer_sunformat_vp_i(SilcStack stack, SilcBuffer src, va_list ap, UNFORMAT_HAS_SPACE(src, len2); if (silc_likely(len2 && x)) { *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char)); - memcpy(*x, src->data, len2); + if (*x) + memcpy(*x, src->data, len2); } silc_buffer_pull(src, len2); break; @@ -969,7 +970,8 @@ int silc_buffer_sunformat_vp_i(SilcStack stack, SilcBuffer src, va_list ap, UNFORMAT_HAS_SPACE(src, len2); if (silc_likely(x && len2)) { *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char)); - memcpy(*x, src->data, len2); + if (*x) + memcpy(*x, src->data, len2); } silc_buffer_pull(src, len2); break; @@ -1007,7 +1009,8 @@ int silc_buffer_sunformat_vp_i(SilcStack stack, SilcBuffer src, va_list ap, UNFORMAT_HAS_SPACE(src, len2); if (silc_likely(x && len2)) { *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char)); - memcpy(*x, src->data, len2); + if (*x) + memcpy(*x, src->data, len2); } silc_buffer_pull(src, len2); break; @@ -1095,7 +1098,8 @@ int silc_buffer_sunformat_vp_i(SilcStack stack, SilcBuffer src, va_list ap, *len3 = len2; if (x && len2) { *x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char)); - memcpy(*x, src->data, len2); + if (*x) + memcpy(*x, src->data, len2); } silc_buffer_pull(src, len2); break; @@ -1174,9 +1178,10 @@ int silc_buffer_sunformat_vp_i(SilcStack stack, SilcBuffer src, va_list ap, SILC_GET32_MSB(len2, src->data); silc_buffer_pull(src, 4); UNFORMAT_HAS_SPACE(src, len2); - silc_buffer_sformat(stack, x, - SILC_STR_DATA(src->data, len2), - SILC_STR_END); + if (silc_buffer_sformat(stack, x, + SILC_STR_DATA(src->data, len2), + SILC_STR_END) < 0) + goto fail; silc_buffer_pull(src, len2); } break;