Convert HEX string to BYTE array, bug.
Find the bug in the following code and win a prize. Its obvious once you find it. CSharp programmers are asked not to mock c++ in this thread.
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#define USHORT unsigned short
#define BYTE unsigned char
USHORT ConvertHexToBytes(
/* IN */ char * hex,
/* IN */ const USHORT hex_length,
/* OUT */ BYTE * buffer,
/* OUT */ const USHORT buffer_length,
/* IN */ const char * delemnator = ":" )
{
if( hex == NULL || hex_length <= 0 ||
buffer == NULL || buffer_length <= 0 )
{
return 0;
}
char *next_token = NULL;
USHORT iOffset = 0 ;
char *p = strtok_s(hex, delemnator, &next_token);
while (p) {
if( 1 != sscanf_s( p, "%02X", &buffer[ iOffset ] ) ) {
break;
}
iOffset++;
if( iOffset >= buffer_length ) {
break; // No more room.
}
p = strtok_s(NULL, delemnator, &next_token);
}
return iOffset ;
}
Leave a comment