devsys: check for over end copies for ps
authorAlan Cox <alan@linux.intel.com>
Mon, 29 Aug 2016 16:46:10 +0000 (17:46 +0100)
committerAlan Cox <alan@linux.intel.com>
Mon, 29 Aug 2016 16:46:10 +0000 (17:46 +0100)
Doesn't matter too much today but it will when we have MMU support

Kernel/devsys.c

index 8850450..a76df30 100644 (file)
@@ -39,7 +39,9 @@ int sys_read(uint8_t minor, uint8_t rawflag, uint8_t flag)
                        uzero(udata.u_base, udata.u_count);
                return udata.u_count;
        case 3:
-               if (udata.u_offset >= PTABSIZE * sizeof(struct p_tab))
+               if (udata.u_count > sizeof(struct p_tab))
+                       udata.u_count = sizeof(struct p_tab);
+               if (udata.u_offset + udata.u_count > PTABSIZE * sizeof(struct p_tab))
                        return 0;
                return uputsys(addr + udata.u_offset, udata.u_count);
 #ifdef CONFIG_NET_NATIVE