X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=rnet_message.c;h=95d8b41fc225de6e302f3f963d9851bac85a0372;hb=d8ef319afbcc0defc9c19c5716f9af3cb70a9536;hp=f47d78c8549735f23058a946e047f00d3bbd7c5e;hpb=5f124a78b9b2f7e98cad8d851bb5835001b86846;p=cascardo%2Frnetclient.git diff --git a/rnet_message.c b/rnet_message.c index f47d78c..95d8b41 100644 --- a/rnet_message.c +++ b/rnet_message.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2013 Thadeu Lima de Souza Cascardo + * Copyright (C) 2014 Alexandre Oliva * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -73,8 +74,8 @@ static int add_field(struct rnet_message **message, char *key, int klen, int n = 0; char *buffer; struct rnet_message *msg = *message; - if ((msg->alen - msg->len) < (klen + vlen + 3)) { - if (rnet_message_expand(message, MAX(msg->len, klen + vlen + 3))) + if ((msg->alen - msg->len) < (size_t) (klen + vlen + 3)) { + if (rnet_message_expand(message, MAX(msg->len, (size_t) (klen + vlen + 3)))) return -ENOMEM; msg = *message; } @@ -146,28 +147,25 @@ int rnet_message_parse(struct rnet_message *msg, char *skey, { char * buffer = msg->buffer; size_t len = msg->len; - int i = 0; + unsigned int i = 0; unsigned int j; int b; char *key; - int klen; - char *kcopy; + unsigned int klen; /* skip first byte */ i++; while (i < len) { - j = buffer[i]; + j = (unsigned char)buffer[i]; b = j & 0x80; - if (b) - ; j = j & 0x7f; i++; key = buffer + i; klen = j; i += j; - j = buffer[i]; + j = (unsigned char)buffer[i]; i++; if (b) - j = j << 8 | buffer[i++]; + j = j << 8 | (unsigned char)buffer[i++]; *value = buffer + i; *vlen = j; i += j;