From: Vyacheslav Cherkashin Date: Fri, 13 Dec 2013 13:32:10 +0000 (+0400) Subject: [FIX] get_string() X-Git-Tag: accepted/tizen/mobile/20160407.001200~268 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e0e98f0003c687ef2bb08a29fc6c424c2e04fc56;p=platform%2Fkernel%2Fswap-modules.git [FIX] get_string() correct parsing of strings without null symbol Change-Id: I4ffd03ec88d81227d4ca261be18c329d46e86043 Signed-off-by: Vyacheslav Cherkashin --- diff --git a/parser/msg_buf.c b/parser/msg_buf.c index 031215e..3520874 100644 --- a/parser/msg_buf.c +++ b/parser/msg_buf.c @@ -114,19 +114,22 @@ int get_u64(struct msg_buf *mb, u64 *val) int get_string(struct msg_buf *mb, char **str) { size_t len, len_max; + enum { min_len_str = 1 }; - len_max = mb->end - mb->ptr - 1; - if(len_max < 0) + if (cmp_mb(mb, min_len_str) < 0) return -EINVAL; - len = strlen(mb->ptr) + 1; + len_max = remained_mb(mb) - 1; + len = strnlen(mb->ptr, len_max); - *str = kmalloc(len, GFP_KERNEL); + *str = kmalloc(len + 1, GFP_KERNEL); if (*str == NULL) return -ENOMEM; memcpy(*str, mb->ptr, len); - mb->ptr += len; + (*str)[len] = '\0'; + + mb->ptr += len + 1; print_parse_debug("str->'%s'\n", *str); return 0;