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 777bf17f56144ee7e6c88d1cd5985826225c69ef..bac9860b5c77937bf55d4de421f225006e86c5af 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;
 }