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:
Guus Sliepen 2012-09-30 13:45:47 +02:00
parent 3bd810ea79
commit c4940a5c88
5 changed files with 38 additions and 12 deletions

View file

@ -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) {

View file

@ -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