diff options
| author | Leah Rowe <leah@libreboot.org> | 2022-12-03 12:27:53 +0000 | 
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2022-12-03 12:28:20 +0000 | 
| commit | 036d710776ba0065560f42f28d081047d552dd0e (patch) | |
| tree | 37746d3106d1b53b51c54024a258867349e5fbc7 /util/nvmutil | |
| parent | 851892b4642d7247f7929f1f0ceef2425f463adf (diff) | |
util/nvmutil: don't initialise rbuf unless needed
previously, it was always initialised, but now it's only
initialised if '?' is used on a mac address character in
command `setmac`
this is done by simply moving mac address character
randomisation to a separate function
Diffstat (limited to 'util/nvmutil')
| -rw-r--r-- | util/nvmutil/nvmutil.c | 37 | 
1 files changed, 22 insertions, 15 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index bf06b4cd..b45e9064 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -36,6 +36,7 @@ ssize_t readFromFile(int *fd, uint8_t *buf, const char *path, int flags,  	size_t size);  void cmd_setmac(const char *strMac);  uint8_t hextonum(char chs); +uint8_t rhex(void);  void cmd_dump(void);  void showmac(int partnum);  void hexdump(int partnum); @@ -217,6 +218,26 @@ uint8_t  hextonum(char chs)  {  	uint8_t val8, ch; +	ch = (uint8_t) chs; + +	if ((ch >= '0') && ch <= '9') { +		val8 = ch - '0'; +	} else if ((ch >= 'A') && (ch <= 'F')) { +		val8 = ch - 'A' + 10; +	} else if ((ch >= 'a') && (ch <= 'f')) { +		val8 = ch - 'a' + 10; +	} else if (ch == '?') { +		val8 = rhex(); +	} else { +		return 16; +	} + +	return val8; +} + +uint8_t +rhex(void) +{  	static int rfd = -1;  	static uint8_t *rbuf = NULL;  	static size_t rindex = BUFSIZ; @@ -237,21 +258,7 @@ hextonum(char chs)  		}  	} -	ch = (uint8_t) chs; - -	if ((ch >= '0') && ch <= '9') { -		val8 = ch - '0'; -	} else if ((ch >= 'A') && (ch <= 'F')) { -		val8 = ch - 'A' + 10; -	} else if ((ch >= 'a') && (ch <= 'f')) { -		val8 = ch - 'a' + 10; -	} else if (ch == '?') { -		val8 = rbuf[rindex++] & 0xf; -	} else { -		return 16; -	} - -	return val8; +	return rbuf[rindex++] & 0xf;  }  void  | 
