Add strict checks to hex to binary conversions.
The main goal is to catch misuse of the obsolete PrivateKey and PublicKey statements.
This commit is contained in:
parent
3bd810ea79
commit
c4940a5c88
5 changed files with 38 additions and 12 deletions
10
lib/utils.c
10
lib/utils.c
|
|
@ -32,11 +32,13 @@ static int charhex2bin(char c) {
|
|||
return toupper(c) - 'A' + 10;
|
||||
}
|
||||
|
||||
|
||||
void hex2bin(char *src, char *dst, int length) {
|
||||
int i;
|
||||
for(i = 0; i < length; i++)
|
||||
bool hex2bin(char *src, char *dst, int length) {
|
||||
for(int i = 0; i < length; i++) {
|
||||
if(!isxdigit(src[i * 2]) || !isxdigit(src[i * 2 + 1]))
|
||||
return false;
|
||||
dst[i] = charhex2bin(src[i * 2]) * 16 + charhex2bin(src[i * 2 + 1]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void bin2hex(char *src, char *dst, int length) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
#ifndef __TINC_UTILS_H__
|
||||
#define __TINC_UTILS_H__
|
||||
|
||||
extern void hex2bin(char *src, char *dst, int length);
|
||||
extern bool hex2bin(char *src, char *dst, int length);
|
||||
extern void bin2hex(char *src, char *dst, int length);
|
||||
|
||||
#ifdef HAVE_MINGW
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue