[U-Boot-Users] parse bug in cmd_mii.c

I noticed that in do_mii() the code is dereferencing argv[1] without checking what value argc has. This leads to an exception if a command line like 'mii ' is given where argv[1] is NULL.
I have a patch, but my cmd_mii.c is carrying around some other patches (some submitted to the list, some local). Is there a good way to separate out the patches I want to submit by themselves?

In message c166aa9f0506131006ba8f552@mail.gmail.com you wrote:
I noticed that in do_mii() the code is dereferencing argv[1] without checking what value argc has. This leads to an exception if a command line like 'mii ' is given where argv[1] is NULL.
I have a patch, but my cmd_mii.c is carrying around some other patches (some submitted to the list, some local). Is there a good way to separate out the patches I want to submit by themselves?
Did I miss it, or did you never send a patch for the problem you mentioned?
Best regards,
Wolfgang Denk

Sorry, it looks like I never sent it in. Here goes:
CHANGELOG * entering 'mii' with no arguments causes a null pointer reference. Check argc is >=2 before dereferencing argv[1]. Print the usage message if not. Patch by Andrew Dyer amdyer@gmail.com, Sat Mar 11 21:42:12 CST 2006
Signed-off-by: Andrew Dyer amdyer@gmail.com
Index: cmd_mii.c =================================================================== RCS file: /home/cvsroot/Projects/u-boot/common/cmd_mii.c,v retrieving revision 1.1.1.5 retrieving revision 1.8 diff -u -r1.1.1.5 -r1.8 --- cmd_mii.c 7 Feb 2006 09:51:23 -0000 1.1.1.5 +++ cmd_mii.c 12 Mar 2006 03:33:56 -0000 1.8 @@ -61,6 +61,11 @@ mii_init (); #endif
+ if (argc < 2) { + printf ("Usage:\n%s\n", cmdtp->usage); + return 1; + } + /* * We use the last specified parameters, unless new ones are * entered. @@ -438,6 +443,11 @@ #ifdef CONFIG_8xx mii_init (); #endif + + if (argc < 2) { + printf ("Usage:\n%s\n", cmdtp->usage); + return 1; + }
/* * We use the last specified parameters, unless new ones are
On 3/11/06, Wolfgang Denk wd@denx.de wrote:
In message c166aa9f0506131006ba8f552@mail.gmail.com you wrote:
I noticed that in do_mii() the code is dereferencing argv[1] without checking what value argc has. This leads to an exception if a command line like 'mii ' is given where argv[1] is NULL.
I have a patch, but my cmd_mii.c is carrying around some other patches (some submitted to the list, some local). Is there a good way to separate out the patches I want to submit by themselves?
Did I miss it, or did you never send a patch for the problem you mentioned?
Best regards,
Wolfgang Denk
-- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de "'Tis true, 'tis pity, and pity 'tis 'tis true." - Poloniouius, in Willie the Shake's _Hamlet, Prince of Darkness_
-- Hardware, n.: The parts of a computer system that can be kicked.

CHANGELOG * When looping over the PHY register address for the mii info command, loop exit count is incorrect in the CONFIG_TERSE_MII version of do_mii(). Patch by Andrew Dyer amdyer@gmail.com, Sat Mar 11 21:54:52 CST 2006
Signed-off-by: Andrew Dyer amdyer@gmail.com
Index: cmd_mii.c =================================================================== RCS file: /home/cvsroot/Projects/u-boot/common/cmd_mii.c,v retrieving revision 1.1.1.5 retrieving revision 1.8 diff -u -r1.1.1.5 -r1.8 --- cmd_mii.c 7 Feb 2006 09:51:23 -0000 1.1.1.5 +++ cmd_mii.c 12 Mar 2006 03:33:56 -0000 1.8 @@ -101,7 +106,7 @@ start = 0; end = 31; }
- for (j = start; j < end; j++) { + for (j = start; j <= end; j++) { if (miiphy_info (devname, j, &oui, &model, &rev) == 0) { printf ("PHY 0x%02X: " "OUI = 0x%04X, "
-- Hardware, n.: The parts of a computer system that can be kicked.

In message c166aa9f0506131006ba8f552@mail.gmail.com you wrote:
I noticed that in do_mii() the code is dereferencing argv[1] without checking what value argc has. This leads to an exception if a command line like 'mii ' is given where argv[1] is NULL.
Finxed. Thanks for pointing out.
I have a patch, but my cmd_mii.c is carrying around some other patches (some submitted to the list, some local). Is there a good way to separate out the patches I want to submit by themselves?
This depends on the tools you use. git cherry piking comes to mind, or some of the git porcelains...
Best regards,
Wolfgang Denk
participants (2)
-
Andrew Dyer
-
Wolfgang Denk