diff options
| author | Andy Shevchenko <andy.shevchenko@gmail.com> | 2010-09-21 09:40:25 +0300 | 
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2010-09-21 22:45:07 -0400 | 
| commit | e7f483eabea8ef6d2b5ce1b74c8184cc06819f15 (patch) | |
| tree | 5c3e397ed7e31886d39e1140bb6aa278e138f36f /net/sunrpc/cache.c | |
| parent | 1117449276bb909b029ed0b9ba13f53e4784db9d (diff) | |
sunrpc/cache: don't use custom hex_to_bin() converter
Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: linux-nfs@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net/sunrpc/cache.c')
| -rw-r--r-- | net/sunrpc/cache.c | 20 | 
1 files changed, 13 insertions, 7 deletions
| diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index 2a8405194056..ac2c6e6abe65 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c @@ -1179,13 +1179,19 @@ int qword_get(char **bpp, char *dest, int bufsize)  	if (bp[0] == '\\' && bp[1] == 'x') {  		/* HEX STRING */  		bp += 2; -		while (isxdigit(bp[0]) && isxdigit(bp[1]) && len < bufsize) { -			int byte = isdigit(*bp) ? *bp-'0' : toupper(*bp)-'A'+10; -			bp++; -			byte <<= 4; -			byte |= isdigit(*bp) ? *bp-'0' : toupper(*bp)-'A'+10; -			*dest++ = byte; -			bp++; +		while (len < bufsize) { +			int h, l; + +			h = hex_to_bin(bp[0]); +			if (h < 0) +				break; + +			l = hex_to_bin(bp[1]); +			if (l < 0) +				break; + +			*dest++ = (h << 4) | l; +			bp += 2;  			len++;  		}  	} else { | 
