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