ARM: zynq: Check zynq aes & rsa command parameters count
authorT Karthik Reddy <t.karthik.reddy@xilinx.com>
Tue, 12 Mar 2019 14:50:21 +0000 (20:20 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 16 Apr 2019 09:51:34 +0000 (11:51 +0200)
This patch checks for zynq aes & rsa commands max parameters count. Also
checks minimum number of parameters count for aes command.

Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
board/xilinx/zynq/cmds.c

index 8b48ea3a03abffec54514d48de41c3b1d00c6470..27d44b760daf36c81fa0a96868ffbb711b24b1b0 100644 (file)
@@ -414,9 +414,13 @@ static int do_zynq_rsa(cmd_tbl_t *cmdtp, int flag, int argc,
        u32 src_ptr;
        char *endp;
 
+       if (argc != cmdtp->maxargs)
+               return CMD_RET_FAILURE;
+
        src_ptr = simple_strtoul(argv[2], &endp, 16);
        if (*argv[2] == 0 || *endp != 0)
                return CMD_RET_USAGE;
+
        if (zynq_verify_image(src_ptr))
                return CMD_RET_FAILURE;
 
@@ -432,6 +436,9 @@ static int zynq_decrypt_image(cmd_tbl_t *cmdtp, int flag, int argc,
        u32 srcaddr, srclen, dstaddr, dstlen;
        int status;
 
+       if (argc < 5 && argc > cmdtp->maxargs)
+               return CMD_RET_USAGE;
+
        srcaddr = simple_strtoul(argv[2], &endp, 16);
        if (*argv[2] == 0 || *endp != 0)
                return CMD_RET_USAGE;
@@ -485,7 +492,7 @@ static int do_zynq(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return CMD_RET_USAGE;
        zynq_cmd = find_cmd_tbl(argv[1], zynq_commands,
                                ARRAY_SIZE(zynq_commands));
-       if (!zynq_cmd || argc != zynq_cmd->maxargs)
+       if (!zynq_cmd)
                return CMD_RET_USAGE;
 
        ret = zynq_cmd->cmd(zynq_cmd, flag, argc, argv);