Eldbus: fix potential unsigned int underflow.
authorTom Hacohen <tom@stosb.com>
Wed, 22 Apr 2015 12:17:28 +0000 (13:17 +0100)
committerTom Hacohen <tom@stosb.com>
Wed, 22 Apr 2015 12:17:31 +0000 (13:17 +0100)
Subtracting two unsigned values results in an unsigned value, which means
abs() will have no effect.
This also means that if base is smaller than size, we'll have an
unsigned int underflow.

I did it this way (with the if) because it looked like base might be
smaller than size. However, please remove the if (and don't reinstate
the abs) if this is not the case.

src/lib/eldbus/eldbus_message_to_eina_value.c

index 777bf17..bac9860 100644 (file)
@@ -91,7 +91,7 @@ _type_offset(char type, unsigned base)
      return base;
    if (!(base % size))
      return base;
-   padding = abs(base - size);
+   padding = (base > size) ? base - size : size - base;
    return base + padding;
 }