/* Get the tag */
        ret = bcm63xx_read_image_tag(master, "rootfs", cfelen, buf);
        if (!ret) {
-               sscanf(buf->flash_image_start, "%u", &rootfsaddr);
-               sscanf(buf->kernel_address, "%u", &kerneladdr);
-               sscanf(buf->kernel_length, "%u", &kernellen);
-               sscanf(buf->total_length, "%u", &totallen);
+               STR_NULL_TERMINATE(buf->flash_image_start);
+               if (kstrtouint(buf->flash_image_start, 10, &rootfsaddr) ||
+                               rootfsaddr < BCM963XX_EXTENDED_SIZE) {
+                       pr_err("invalid rootfs address: %*ph\n",
+                               sizeof(buf->flash_image_start),
+                               buf->flash_image_start);
+                       goto invalid_tag;
+               }
+
+               STR_NULL_TERMINATE(buf->kernel_address);
+               if (kstrtouint(buf->kernel_address, 10, &kerneladdr) ||
+                               kerneladdr < BCM963XX_EXTENDED_SIZE) {
+                       pr_err("invalid kernel address: %*ph\n",
+                               sizeof(buf->kernel_address),
+                               buf->kernel_address);
+                       goto invalid_tag;
+               }
+
+               STR_NULL_TERMINATE(buf->kernel_length);
+               if (kstrtouint(buf->kernel_length, 10, &kernellen)) {
+                       pr_err("invalid kernel length: %*ph\n",
+                               sizeof(buf->kernel_length),
+                               buf->kernel_length);
+                       goto invalid_tag;
+               }
+
+               STR_NULL_TERMINATE(buf->total_length);
+               if (kstrtouint(buf->total_length, 10, &totallen)) {
+                       pr_err("invalid total length: %*ph\n",
+                               sizeof(buf->total_length),
+                               buf->total_length);
+                       goto invalid_tag;
+               }
 
                kerneladdr = kerneladdr - BCM963XX_EXTENDED_SIZE;
                rootfsaddr = rootfsaddr - BCM963XX_EXTENDED_SIZE;
                        rootfslen = spareaddr - rootfsaddr;
                }
        } else if (ret > 0) {
+invalid_tag:
                kernellen = 0;
                rootfslen = 0;
                rootfsaddr = 0;