
Jerry Van Baren wrote:
Wolfgang Denk wrote:
Dear Stefan Althoefer,
In message ghc625$k37$1@ger.gmane.org you wrote:
This patches cmd_nvedit to reject changes for "ethaddr." in addition to "ethaddr" and "serial#". This is intendend to protect changes to additional ethernet addresses (e.g. "ethernet1").
The patch is bogus, as additional ethernet addrssses are eth1addr, eth2addr, etc. and not ethaddr1, etc.
Also, please don't remove perfectly god comments.
NAK.
Best regards,
Wolfgang Denk
Arrgh, I was thinking I was so clever with strncmp() and it turns out I was being clever based on a totally bogus assumption (wrong format). :-( I *hate* it when that happens.
Uh yeah, I wasn't as clever as you by half, but definitely as bogus :) It's good to know Wolfgang has such keen eyes.
The following should work for eth[0-9]+addr (untested):
int ethnum; : : /* "eth[0-9]+addr" is always protected */ if ((sscanf(name, "eth%daddr", ðnum) == 1) && (ethnum < MAX_ETH_ADDRS)) protected = 1;
Notes:
- The "ethaddr" case is handled prior to the above snippet of code.
- I took out the added check "if (strlen (name) == 8)", I'm not sure why
that was in there, it would limit us to 10 ethernets. If extra validation is desired, ethnum could be checked to be less than MAX_ETH_ADDRS. On reflection, it seems like a good idea so I added it above.
- This is somewhat better than the strncmp() trick because the sscanf()
will only convert digits.
Neat, although it's very tempting to pull a Python 3 and say "screw reverse compatibility" and change this naming convention.
gvb _________________________
regards, Ben