u-boot/common
Wolfgang Denk 54841ab50c Make sure that argv[] argument pointers are not modified.
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: Wolfgang Denk <wd@denx.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
2010-07-04 23:55:42 +02:00
..
bedbug.c common: Move conditional compilation to Makefile 2008-08-13 01:40:38 +02:00
cmd_ambapp.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_bdinfo.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_bedbug.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_bmp.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_boot.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_bootldr.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_bootm.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_cache.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_console.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_cplbinfo.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_cramfs.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_dataflash_mmc_mux.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_date.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_dcr.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_df.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_diag.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_display.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_dtt.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_echo.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_eeprom.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_elf.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_exit.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_ext2.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_fat.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_fdc.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_fdos.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_fdt.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_flash.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_fpga.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_help.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_i2c.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_ide.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_immap.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_irq.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_itest.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_jffs2.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_license.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_load.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_log.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mac.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mem.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mfsl.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mgdisk.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mii.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_misc.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mmc.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mp.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mtdparts.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_nand.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_net.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_nvedit.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_onenand.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_otp.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_pci.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_pcmcia.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_portio.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_reginfo.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_reiser.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_sata.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_scsi.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_setexpr.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_sf.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_source.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_spi.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_spibootldr.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_strings.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_terminal.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_test.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_tsi148.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_ubi.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_ubifs.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_universe.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_usb.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_version.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_vfd.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_ximg.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_yaffs2.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
command.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
console.c Make *printf() return "int" instead of "void" 2010-07-04 23:51:49 +02:00
ddr_spd.c Enabled support for Rev 1.3 SPD for DDR2 DIMMs 2010-05-12 04:54:30 -05:00
dlmalloc.c malloc: sbrk() should return MORECORE_FAILURE instead of NULL on failure 2010-04-10 00:30:27 +02:00
dlmalloc.src * Code cleanup: 2003-06-27 21:31:46 +00:00
env_common.c Remove AmigaOneG3SE board 2010-06-23 23:24:20 +02:00
env_dataflash.c env: kill off default_environment_size 2009-08-09 22:41:42 +02:00
env_eeprom.c Redundant environment: move flag definitions to header file 2010-07-04 23:52:42 +02:00
env_embedded.c Revert "env: only build env_embedded and envcrc when needed" 2009-10-27 20:46:31 +01:00
env_flash.c Redundant environment: move flag definitions to header file 2010-07-04 23:52:42 +02:00
env_mgdisk.c env: kill off default_environment_size 2009-08-09 22:41:42 +02:00
env_nand.c shannon/INFERNO: fix special handling of environment configuration 2010-07-04 23:48:55 +02:00
env_nowhere.c env: kill off default_environment_size 2009-08-09 22:41:42 +02:00
env_nvram.c Remove AmigaOneG3SE board 2010-06-23 23:24:20 +02:00
env_onenand.c onenand: Fix compile errors due to FlexOneNAND 2010-01-06 16:28:00 -06:00
env_sf.c add redundant environment for env_sf.c 2010-06-30 23:47:08 -04:00
exports.c exports.c: fix warning: 'dummy' defined but not used 2010-07-04 23:50:55 +02:00
fdt_support.c fdt_support: add entry for sec3.1 and fix sec3.3 2010-05-30 11:14:37 -05:00
flash.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
hush.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
hwconfig.c hwconfig: Add some unit tests 2010-06-29 22:24:48 +02:00
image.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
iomux.c stdio/device: rework function naming convention 2009-07-18 00:27:46 +02:00
kallsyms.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
kgdb.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
kgdb_stubs.c kgdb: add default generic stubs 2010-01-18 00:23:00 +01:00
lcd.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
lynxkdi.c Fix implicit declaration of function 'eth_[gs]etenv_enetaddr' 2009-03-28 20:16:16 +01:00
main.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
Makefile CRAMFS: support cramfs in RAM 2010-01-18 00:44:13 +01:00
memsize.c Sequential accesses to non-existent memory must be synchronized, 2006-11-06 17:06:36 +01:00
miiphyutil.c Cosmetic change - indentation correction. 2010-03-12 00:19:11 +01:00
modem.c make MODEM SUPPORT generic instead of duplicate it 2009-06-12 20:45:47 +02:00
s_record.c Initial revision 2002-08-17 09:36:01 +00:00
serial.c x86: Use CONFIG_SERIAL_MULTI 2010-05-06 00:16:46 +02:00
stdio.c arm/microblaze/nios/nios2/sh: Remove relocation fixups 2009-10-03 10:17:57 +02:00
system_map.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
update.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
usb.c USB: usb_control_msg wait for driver ISR to set status. 2010-02-03 22:06:59 +01:00
usb_kbd.c USB Consolidate descriptor definitions 2009-12-20 12:47:37 +01:00
usb_storage.c USB storage probe 2010-04-08 21:40:00 +02:00
xyzModem.c common: fix 'dummy' is used uninitialized in this function warning 2009-07-19 21:37:02 +02:00