mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-31 18:41:39 +00:00
MINOR: standard: The function parse_binary() can use preallocated buffer
Let the function support pre-allocated buffers if the argument is not null, or allocate its own buffer if it is null.
This commit is contained in:
parent
7148ce6ef4
commit
9645d42d74
@ -1367,6 +1367,7 @@ int parse_binary(const char *source, char **binstr, int *binstrlen, char **err)
|
||||
int len;
|
||||
const char *p = source;
|
||||
int i,j;
|
||||
int alloc;
|
||||
|
||||
len = strlen(source);
|
||||
if (len % 2) {
|
||||
@ -1375,12 +1376,24 @@ int parse_binary(const char *source, char **binstr, int *binstrlen, char **err)
|
||||
}
|
||||
|
||||
len = len >> 1;
|
||||
*binstrlen = len;
|
||||
*binstr = calloc(len, sizeof(char));
|
||||
|
||||
if (!*binstr) {
|
||||
memprintf(err, "out of memory while loading string pattern");
|
||||
return 0;
|
||||
*binstr = calloc(len, sizeof(char));
|
||||
if (!*binstr) {
|
||||
memprintf(err, "out of memory while loading string pattern");
|
||||
return 0;
|
||||
}
|
||||
alloc = 1;
|
||||
}
|
||||
else {
|
||||
if (*binstrlen < len) {
|
||||
memprintf(err, "no space avalaible in the buffer. expect %d, provides %d",
|
||||
len, *binstrlen);
|
||||
return 0;
|
||||
}
|
||||
alloc = 0;
|
||||
}
|
||||
*binstrlen = len;
|
||||
|
||||
i = j = 0;
|
||||
while (j < len) {
|
||||
@ -1394,7 +1407,8 @@ int parse_binary(const char *source, char **binstr, int *binstrlen, char **err)
|
||||
|
||||
bad_input:
|
||||
memprintf(err, "an hex digit is expected (found '%c')", p[i-1]);
|
||||
free(binstr);
|
||||
if (alloc)
|
||||
free(binstr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user