From c70b8c27dc47986f0bf42a19448cbd738a50fb9c Mon Sep 17 00:00:00 2001
From: Vit Rosin <vit_r@list.ru>
Date: Tue, 16 Feb 2010 15:18:39 +0000
Subject: [PATCH] lib/search/hex.c in mc_search__hex_translate_to_regex ():
missing checks of g_str...() return
and missing g_free (tmp_str);
---
lib/search/hex.c | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/lib/search/hex.c b/lib/search/hex.c
index 2ecdafb..8dd3bb5 100644
a
|
b
|
|
51 | 51 | static GString * |
52 | 52 | mc_search__hex_translate_to_regex (gchar * str, gsize * len) |
53 | 53 | { |
54 | | GString *buff = g_string_new (""); |
55 | | gchar *tmp_str = g_strndup (str, *len); |
| 54 | GString *buff; |
| 55 | gchar *tmp_str; |
56 | 56 | gchar *tmp_str2; |
57 | 57 | gsize loop = 0; |
58 | 58 | int val, ptr; |
59 | 59 | |
| 60 | buff = g_string_new (""); |
| 61 | if (buff == NULL) |
| 62 | return NULL; |
| 63 | |
| 64 | tmp_str = g_strndup (str, *len); |
| 65 | if (tmp_str == NULL) { |
| 66 | g_free (buff); |
| 67 | return NULL; |
| 68 | } |
| 69 | |
60 | 70 | g_strchug (tmp_str); /* trim leadind whitespaces */ |
61 | 71 | |
62 | 72 | while (loop < *len) { |
… |
… |
mc_search__hex_translate_to_regex (gchar * str, gsize * len) |
66 | 76 | continue; |
67 | 77 | } |
68 | 78 | tmp_str2 = g_strdup_printf ("\\x%02X", (unsigned char) val); |
| 79 | if (tmp_str2 == NULL) { |
| 80 | g_free (buff); |
| 81 | g_free (tmp_str); |
| 82 | return NULL; |
| 83 | } |
69 | 84 | g_string_append (buff, tmp_str2); |
70 | 85 | g_free (tmp_str2); |
71 | 86 | loop += ptr; |
… |
… |
mc_search__hex_translate_to_regex (gchar * str, gsize * len) |
88 | 103 | loop++; |
89 | 104 | } |
90 | 105 | *len = buff->len; |
| 106 | g_free (tmp_str); |
91 | 107 | return buff; |
92 | 108 | } |
93 | 109 | |