Ensure that the break value is aligned.
authorDavid Given <dg@cowlark.com>
Sat, 17 Oct 2015 21:26:49 +0000 (23:26 +0200)
committerDavid Given <dg@cowlark.com>
Sat, 17 Oct 2015 21:26:49 +0000 (23:26 +0200)
Kernel/syscall_exec16.c

index 7d02b8e..cd976e7 100644 (file)
@@ -206,7 +206,8 @@ arg_t _execve(void)
           that on 8bit boxes, but defer it to brk/sbrk() */
        uzero((uint8_t *)progptr, bss);
 
-       udata.u_break = (int) progptr + bss;    //  Set initial break for program
+       // Set initial break for program
+       udata.u_break = (int)alignup(progptr + bss, sizeof(void*));
 
        /* Turn off caught signals */
        memset(udata.u_sigvec, 0, sizeof(udata.u_sigvec));