memory could be leaked if the S option is passed several time.
Also replace the xzalloc + strcpy call with a call to xstrdup.

Signed-off-by: Jules Maselbas <[email protected]>
---
 commands/of_display_timings.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/commands/of_display_timings.c b/commands/of_display_timings.c
index 232074fce7..5998d42ffe 100644
--- a/commands/of_display_timings.c
+++ b/commands/of_display_timings.c
@@ -42,7 +42,7 @@ static int do_of_display_timings(int argc, char *argv[])
        struct device_node *root = NULL;
        struct device_node *display = NULL;
        struct device_node *timings = NULL;
-       char *timingpath = NULL;
+       const char *timingpath = NULL;
        char *dtbfile = NULL;
 
        while ((opt = getopt(argc, argv, "sS:lf:")) > 0) {
@@ -57,8 +57,7 @@ static int do_of_display_timings(int argc, char *argv[])
                        selected = 1;
                        break;
                case 'S':
-                       timingpath = xzalloc(strlen(optarg) + 1);
-                       strcpy(timingpath, optarg);
+                       timingpath = optarg;
                        break;
                default:
                        return COMMAND_ERROR_USAGE;
@@ -108,7 +107,7 @@ static int do_of_display_timings(int argc, char *argv[])
        }
 
        if (timingpath)
-               of_register_fixup(of_display_timing, timingpath);
+               of_register_fixup(of_display_timing, xstrdup(timingpath));
 
        return 0;
 }
-- 
2.48.1


Reply via email to