1. 04 Jul, 2010 1 commit
    • Wolfgang Denk's avatar
      Make sure that argv[] argument pointers are not modified. · 54841ab5
      Wolfgang Denk authored
      The hush shell dynamically allocates (and re-allocates) memory for the
      argument strings in the "char *argv[]" argument vector passed to
      commands.  Any code that modifies these pointers will cause serious
      corruption of the malloc data structures and crash U-Boot, so make
      sure the compiler can check that no such modifications are being done
      by changing the code into "char * const argv[]".
      
      This modification is the result of debugging a strange crash caused
      after adding a new command, which used the following argument
      processing code which has been working perfectly fine in all Unix
      systems since version 6 - but not so in U-Boot:
      
      int main (int argc, char **argv)
      {
      	while (--argc > 0 && **++argv == '-') {
      /* ====> */	while (*++*argv) {
      			switch (**argv) {
      			case 'd':
      				debug++;
      				break;
      			...
      			default:
      				usage ();
      			}
      		}
      	}
      	...
      }
      
      The line marked "====>" will corrupt the malloc data structures and
      usually cause U-Boot to crash when the next command gets executed by
      the shell.  With the modification, the compiler will prevent this with
      an
      	error: increment of read-only location '*argv'
      
      N.B.: The code above can be trivially rewritten like this:
      
      	while (--argc > 0 && **++argv == '-') {
      		char *arg = *argv;
      		while (*++arg) {
      			switch (*arg) {
      			...
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      Acked-by: default avatarMike Frysinger <vapier@gentoo.org>
      54841ab5
  2. 06 May, 2010 1 commit
    • Stefan Roese's avatar
      powerpc: Consolidate bootcount_{store|load} for PowerPC · e4a95d11
      Stefan Roese authored
      This patch consolidates bootcount_{store|load} for PowerPC by
      implementing a common version in arch/powerpc/lib/bootcount.c. This
      code is now used by all PowerPC variants that currently have these
      functions implemented.
      
      The functions now use the proper IO-accessor functions to read/write the
      values.
      
      This code also supports two different bootcount versions:
      
      a) Use 2 separate words (2 * 32bit) to store the bootcounter
      b) Use only 1 word (2 * 16bit) to store the bootcounter
      
      Version b) was already used by MPC5xxx.
      Signed-off-by: default avatarStefan Roese <sr@denx.de>
      Acked-by: default avatarDetlev Zundel <dzu@denx.de>
      Acked-by: default avatarKim Phillips <kim.phillips@freescale.com>
                for 83xx parts
      Cc: Michael Zaidman <michael.zaidman@gmail.com>
      Cc: Wolfgang Denk <wd@denx.de>
      Cc: Kim Phillips <kim.phillips@freescale.com>
      Cc: Anatolij Gustschin <agust@denx.de>
      e4a95d11
  3. 21 Apr, 2010 1 commit