1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-27 22:50:26 +03:00

Adding missing calls to va_end().

Just a small commit to get a handle on this git thingy.  This patch
fixes some missing calls to va_end() to match various calls to va_start()
and VA_COPY().

Tim.
(This used to be commit ec367f307dff7948722b9ac97beb960efd91991f)
This commit is contained in:
Tim Potter 2008-01-27 17:31:56 +11:00 committed by Volker Lendecke
parent 47e1251f72
commit 54db183987
6 changed files with 39 additions and 6 deletions

View File

@ -47,7 +47,10 @@
lang_msg_free(msgstr);
if (ret <= 0) return ret;
if (ret <= 0) {
va_end(ap2);
return ret;
}
/* now we have the string in unix format, convert it to the display
charset, but beware of it growing */
@ -56,6 +59,7 @@ again:
p2 = (char *)SMB_MALLOC(maxlen);
if (!p2) {
SAFE_FREE(p);
va_end(ap2);
return -1;
}
clen = convert_string(CH_UNIX, CH_DISPLAY, p, ret, p2, maxlen, True);
@ -72,6 +76,8 @@ again:
ret = fwrite(p2, 1, clen, f);
SAFE_FREE(p2);
va_end(ap2);
return ret;
}

View File

@ -2431,6 +2431,7 @@ char *smb_xstrndup(const char *s, size_t n)
if (n == -1 || ! *ptr) {
smb_panic("smb_xvasprintf: out of memory");
}
va_end(ap2);
return n;
}

View File

@ -656,6 +656,7 @@ int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...)
return PTR_DIFF(buf, buf0);
no_space:
va_end(ap);
return -1;
}

View File

@ -223,9 +223,15 @@ size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f)
VA_COPY(ap2, ap);
len = vasprintf(&p, format, ap2);
if (len <= 0) return len;
if (len <= 0) {
va_end(ap2);
return len;
}
ret = x_fwrite(p, 1, len, f);
SAFE_FREE(p);
va_end(ap2);
return ret;
}

View File

@ -170,6 +170,7 @@ bool msrpc_gen(DATA_BLOB *blob,
/* a helpful macro to avoid running over the end of our blob */
#define NEED_DATA(amount) \
if ((head_ofs + amount) > blob->length) { \
va_end(ap); \
return False; \
}
@ -216,16 +217,20 @@ bool msrpc_parse(const DATA_BLOB *blob,
if ((len1 != len2) || (ptr + len1 < ptr) ||
(ptr + len1 < len1) ||
(ptr + len1 > blob->length)) {
va_end(ap);
return false;
}
if (len1 & 1) {
/* if odd length and unicode */
va_end(ap);
return false;
}
if (blob->data + ptr <
(uint8 *)(unsigned long)ptr ||
blob->data + ptr < blob->data)
blob->data + ptr < blob->data) {
va_end(ap);
return false;
}
if (0 < len1) {
char *p = NULL;
@ -261,13 +266,16 @@ bool msrpc_parse(const DATA_BLOB *blob,
if ((len1 != len2) || (ptr + len1 < ptr) ||
(ptr + len1 < len1) ||
(ptr + len1 > blob->length)) {
va_end(ap);
return false;
}
if (blob->data + ptr <
(uint8 *)(unsigned long)ptr ||
blob->data + ptr < blob->data)
blob->data + ptr < blob->data) {
va_end(ap);
return false;
}
if (0 < len1) {
char *p = NULL;
@ -304,13 +312,16 @@ bool msrpc_parse(const DATA_BLOB *blob,
if ((len1 != len2) || (ptr + len1 < ptr) ||
(ptr + len1 < len1) ||
(ptr + len1 > blob->length)) {
va_end(ap);
return false;
}
if (blob->data + ptr <
(uint8 *)(unsigned long)ptr ||
blob->data + ptr < blob->data)
blob->data + ptr < blob->data) {
va_end(ap);
return false;
}
*b = data_blob(blob->data + ptr, len1);
}
@ -322,6 +333,7 @@ bool msrpc_parse(const DATA_BLOB *blob,
NEED_DATA(len1);
if (blob->data + head_ofs < (uint8 *)head_ofs ||
blob->data + head_ofs < blob->data) {
va_end(ap);
return false;
}
@ -337,7 +349,8 @@ bool msrpc_parse(const DATA_BLOB *blob,
s = va_arg(ap, char *);
if (blob->data + head_ofs < (uint8 *)head_ofs ||
blob->data + head_ofs < blob->data) {
blob->data + head_ofs < blob->data) {
va_end(ap);
return false;
}
@ -351,11 +364,13 @@ bool msrpc_parse(const DATA_BLOB *blob,
blob->length - head_ofs,
STR_ASCII|STR_TERMINATE);
if (ret == (size_t)-1 || p == NULL) {
va_end(ap);
return false;
}
head_ofs += ret;
if (strcmp(s, p) != 0) {
TALLOC_FREE(p);
va_end(ap);
return false;
}
TALLOC_FREE(p);

View File

@ -41,15 +41,18 @@ static int print_run_command(int snum, const char* printername, bool do_sub,
/* check for a valid system printername and valid command to run */
if ( !printername || !*printername ) {
va_end(ap);
return -1;
}
if (!command || !*command) {
va_end(ap);
return -1;
}
syscmd = talloc_strdup(ctx, command);
if (!syscmd) {
va_end(ap);
return -1;
}
@ -57,6 +60,7 @@ static int print_run_command(int snum, const char* printername, bool do_sub,
char *value = va_arg(ap,char *);
syscmd = talloc_string_sub(ctx, syscmd, arg, value);
if (!syscmd) {
va_end(ap);
return -1;
}
}