From Tony Trinh via bug 5895:

Add sanity checks in range.c

svn path=/trunk/; revision=37784
This commit is contained in:
Stig Bjørlykke 2011-06-25 15:21:17 +00:00
parent 7491b68a3a
commit 08c7a1d0f1
1 changed files with 23 additions and 12 deletions

View File

@ -107,6 +107,9 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
guint32 tmp;
unsigned long val;
if ( (rangep == NULL) || (es == NULL) )
return CVT_SYNTAX_ERROR;
/* Allocate a range; this has room for one subrange. */
range = g_malloc(RANGE_HDR_SIZE + sizeof (range_admin_t));
range->nranges = 0;
@ -289,6 +292,9 @@ ranges_are_equal(range_t *a, range_t *b)
{
guint i;
if ( (a == NULL) || (b == NULL) )
return FALSE;
if (a->nranges != b->nranges)
return FALSE;
@ -311,10 +317,12 @@ void
range_foreach(range_t *range, void (*callback)(guint32 val))
{
guint32 i, j;
for (i=0; i < range->nranges; i++) {
for (j = range->ranges[i].low; j <= range->ranges[i].high; j++)
callback(j);
if (range && callback) {
for (i=0; i < range->nranges; i++) {
for (j = range->ranges[i].low; j <= range->ranges[i].high; j++)
callback(j);
}
}
}
@ -328,15 +336,16 @@ range_convert_range(range_t *range)
strbuf=ep_strbuf_new(NULL);
for (i=0; i < range->nranges; i++) {
if (range->ranges[i].low == range->ranges[i].high) {
ep_strbuf_append_printf(strbuf, "%s%u", prepend_comma?",":"", range->ranges[i].low);
} else {
ep_strbuf_append_printf(strbuf, "%s%u-%u", prepend_comma?",":"", range->ranges[i].low, range->ranges[i].high);
if (range) {
for (i=0; i < range->nranges; i++) {
if (range->ranges[i].low == range->ranges[i].high) {
ep_strbuf_append_printf(strbuf, "%s%u", prepend_comma?",":"", range->ranges[i].low);
} else {
ep_strbuf_append_printf(strbuf, "%s%u-%u", prepend_comma?",":"", range->ranges[i].low, range->ranges[i].high);
}
prepend_comma = TRUE;
}
prepend_comma = TRUE;
}
return strbuf->str;
}
@ -347,6 +356,9 @@ range_copy(range_t *src)
range_t *dst;
size_t range_size;
if (src == NULL)
return NULL;
range_size = RANGE_HDR_SIZE + src->nranges*sizeof (range_admin_t);
dst = g_malloc(range_size);
memcpy(dst, src, range_size);
@ -358,7 +370,6 @@ range_copy(range_t *src)
static void
value_is_in_range_check(range_t *range, guint32 val)
{
/* Print the result for a given value */
printf("Function : value_is_in_range_check Number %u\t",val);