Those functions are for stringify filter arguments.  As caller of
those functions handles NULL string properly, it seems that it's
enough to return NULL rather than calling die().

Signed-off-by: Namhyung Kim <namhy...@kernel.org>
---
 tools/lib/traceevent/parse-filter.c | 51 ++++++++++++++++++++++---------------
 1 file changed, 31 insertions(+), 20 deletions(-)

diff --git a/tools/lib/traceevent/parse-filter.c 
b/tools/lib/traceevent/parse-filter.c
index 8a5b7a74b44e..ff95da94eee2 100644
--- a/tools/lib/traceevent/parse-filter.c
+++ b/tools/lib/traceevent/parse-filter.c
@@ -2108,7 +2108,9 @@ static char *op_to_str(struct event_filter *filter, 
struct filter_arg *arg)
                                default:
                                        break;
                                }
-                               str = malloc_or_die(6);
+                               str = malloc(6);
+                               if (str == NULL)
+                                       break;
                                if (val)
                                        strcpy(str, "TRUE");
                                else
@@ -2131,7 +2133,9 @@ static char *op_to_str(struct event_filter *filter, 
struct filter_arg *arg)
                }
 
                len = strlen(left) + strlen(right) + strlen(op) + 10;
-               str = malloc_or_die(len);
+               str = malloc(len);
+               if (str == NULL)
+                       break;
                snprintf(str, len, "(%s) %s (%s)",
                         left, op, right);
                break;
@@ -2149,7 +2153,9 @@ static char *op_to_str(struct event_filter *filter, 
struct filter_arg *arg)
                        right_val = 0;
                if (right_val >= 0) {
                        /* just return the opposite */
-                       str = malloc_or_die(6);
+                       str = malloc(6);
+                       if (str == NULL)
+                               break;
                        if (right_val)
                                strcpy(str, "FALSE");
                        else
@@ -2157,8 +2163,9 @@ static char *op_to_str(struct event_filter *filter, 
struct filter_arg *arg)
                        break;
                }
                len = strlen(right) + strlen(op) + 3;
-               str = malloc_or_die(len);
-               snprintf(str, len, "%s(%s)", op, right);
+               str = malloc(len);
+               if (str)
+                       snprintf(str, len, "%s(%s)", op, right);
                break;
 
        default:
@@ -2174,9 +2181,9 @@ static char *val_to_str(struct event_filter *filter, 
struct filter_arg *arg)
 {
        char *str;
 
-       str = malloc_or_die(30);
-
-       snprintf(str, 30, "%lld", arg->value.val);
+       str = malloc(30);
+       if (str)
+               snprintf(str, 30, "%lld", arg->value.val);
 
        return str;
 }
@@ -2231,12 +2238,13 @@ static char *exp_to_str(struct event_filter *filter, 
struct filter_arg *arg)
                op = "^";
                break;
        default:
-               die("oops in exp");
+               break;
        }
 
        len = strlen(op) + strlen(lstr) + strlen(rstr) + 4;
-       str = malloc_or_die(len);
-       snprintf(str, len, "%s %s %s", lstr, op, rstr);
+       str = malloc(len);
+       if (str)
+               snprintf(str, len, "%s %s %s", lstr, op, rstr);
 out:
        free(lstr);
        free(rstr);
@@ -2282,9 +2290,9 @@ static char *num_to_str(struct event_filter *filter, 
struct filter_arg *arg)
                        op = "<=";
 
                len = strlen(lstr) + strlen(op) + strlen(rstr) + 4;
-               str = malloc_or_die(len);
-               sprintf(str, "%s %s %s", lstr, op, rstr);
-
+               str = malloc(len);
+               if (str)
+                       sprintf(str, "%s %s %s", lstr, op, rstr);
                break;
 
        default:
@@ -2322,10 +2330,11 @@ static char *str_to_str(struct event_filter *filter, 
struct filter_arg *arg)
 
                len = strlen(arg->str.field->name) + strlen(op) +
                        strlen(arg->str.val) + 6;
-               str = malloc_or_die(len);
-               snprintf(str, len, "%s %s \"%s\"",
-                        arg->str.field->name,
-                        op, arg->str.val);
+               str = malloc(len);
+               if (str) {
+                       snprintf(str, len, "%s %s \"%s\"",
+                                arg->str.field->name, op, arg->str.val);
+               }
                break;
 
        default:
@@ -2341,7 +2350,9 @@ static char *arg_to_str(struct event_filter *filter, 
struct filter_arg *arg)
 
        switch (arg->type) {
        case FILTER_ARG_BOOLEAN:
-               str = malloc_or_die(6);
+               str = malloc(6);
+               if (str == NULL)
+                       return NULL;
                if (arg->boolean.value)
                        strcpy(str, "TRUE");
                else
@@ -2380,7 +2391,7 @@ static char *arg_to_str(struct event_filter *filter, 
struct filter_arg *arg)
  *
  * Returns a string that displays the filter contents.
  *  This string must be freed with free(str).
- *  NULL is returned if no filter is found.
+ *  NULL is returned if no filter is found or allocation failed.
  */
 char *
 pevent_filter_make_string(struct event_filter *filter, int event_id)
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to