Skip to content
Snippets Groups Projects
  1. Jul 28, 2011
  2. Jul 04, 2010
    • 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
  3. Jun 12, 2009
    • Wolfgang Denk's avatar
      General help message cleanup · a89c33db
      Wolfgang Denk authored
      
      Many of the help messages were not really helpful; for example, many
      commands that take no arguments would not print a correct synopsis
      line, but "No additional help available." which is not exactly wrong,
      but not helpful either.
      
      Commit ``Make "usage" messages more helpful.'' changed this
      partially. But it also became clear that lots of "Usage" and "Help"
      messages (fields "usage" and "help" in struct cmd_tbl_s respective)
      were actually redundant.
      
      This patch cleans this up - for example:
      
      Before:
      	=> help dtt
      	dtt - Digital Thermometer and Thermostat
      
      	Usage:
      	dtt         - Read temperature from digital thermometer and thermostat.
      
      After:
      	=> help dtt
      	dtt - Read temperature from Digital Thermometer and Thermostat
      
      	Usage:
      	dtt
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      a89c33db
  4. Jan 28, 2009
  5. Sep 10, 2008
  6. Jan 17, 2008
  7. Jul 13, 2006
    • Haiying Wang's avatar
      Add support for reading and writing mac addresses to or from ID EEPROM. · bea3f28d
      Haiying Wang authored
      
      Added code for reading and writing Mac addresses to/from ID EEPROM(0x57).
      With attached patch, we can use command "mac/mac read/mac save/"
      to read and write EEPROM under u-boot prompt.
      
      U-boot will calculate the checksum of EEPROM while bootup,
      if it is right, then u-boot will check whether the mac address
      of eTSEC0/1/2/3 is availalbe (non-zero).
      
      If there is mac address availabe in EEPROM, u-boot will use it,
      otherewise, u-boot will use the mac address defined in
      MPC8641HPCN.h. This matches the requirement to set unique mac address
      for each TSEC port.
      
      Signed-off-by: default avatarHaiying Wang <haiying.wang@freescale.com>
      Signed-off-by: default avatarYork Sun <yorksun@freescale.com>
      bea3f28d
Loading