projects
/
silc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
8aa9620
)
Handle memory allocation failures when unformatting data
silc.server.1.1.7
author
Pekka Riikonen
<priikone@silcnet.org>
Sun, 25 May 2008 09:25:04 +0000
(12:25 +0300)
committer
Pekka Riikonen
<priikone@silcnet.org>
Sun, 25 May 2008 09:25:04 +0000
(12:25 +0300)
lib/silcutil/silcbuffmt.c
patch
|
blob
|
history
diff --git
a/lib/silcutil/silcbuffmt.c
b/lib/silcutil/silcbuffmt.c
index bbb923e84a77a8e436cfe9a725db83cd872dc560..98836b61768a3771c2b8a7059db6e7cab728b0d3 100644
(file)
--- a/
lib/silcutil/silcbuffmt.c
+++ b/
lib/silcutil/silcbuffmt.c
@@
-365,7
+365,8
@@
int silc_buffer_sunformat_vp(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));
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;
}
silc_buffer_pull(src, len2);
break;
@@
-478,7
+479,8
@@
int silc_buffer_sunformat_vp(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));
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;
}
silc_buffer_pull(src, len2);
break;
@@
-493,7
+495,8
@@
int silc_buffer_sunformat_vp(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));
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;
}
silc_buffer_pull(src, len2);
break;
@@
-521,7
+524,8
@@
int silc_buffer_sunformat_vp(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));
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;
}
silc_buffer_pull(src, len2);
break;
@@
-571,7
+575,8
@@
int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap)
*len3 = len2;
if (x && len2) {
*x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
*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;
}
silc_buffer_pull(src, len2);
break;
@@
-589,7
+594,8
@@
int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap)
*len3 = len2;
if (x && len2) {
*x = silc_scalloc(stack, len2 + 1, sizeof(unsigned char));
*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;
}
silc_buffer_pull(src, len2);
break;
@@
-630,9
+636,10
@@
int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap)
SILC_GET32_MSB(len2, src->data);
silc_buffer_pull(src, 4);
UNFORMAT_HAS_SPACE(src, len2);
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;
silc_buffer_pull(src, len2);
}
break;