From a22163cbe74e267bbe307c39c815dbb781acc83a Mon Sep 17 00:00:00 2001 From: FreeArtMan Date: Tue, 21 May 2019 22:21:21 +0100 Subject: Added buffer check function --- netbytes.c | 33 +++++++++++++++++++++++++++++++++ netbytes.h | 10 ++++++++++ 2 files changed, 43 insertions(+) diff --git a/netbytes.c b/netbytes.c index 1f8433b..3a6dc0a 100644 --- a/netbytes.c +++ b/netbytes.c @@ -690,6 +690,7 @@ int nb_type( netbyte_store *store, int count, __NBT_TYPED **type ) //nbt = (__NBT_TYPED)store->types[count].type; //warnign? who cares //*type = nbt; + #warning "Looks like real error" *type = store->types[count].type; return 0; } @@ -762,6 +763,38 @@ int nb_fread( netbyte_store *store, int fd) return 0; } + +/* +Return: + 1 - looks like data are netbyte buffer + 0 - data isnot netbyte buffer +*/ +int nb_check_buf(uint8_t *data, int len, int *detected_size) +{ + __NBT_SIZE size; + if (len < sizeof(__NBT_SIZE)) + { + printf("if (len > sizeof(__NBT_SIZE))\n"); + return 0; + } + + memcpy(&size, data, sizeof(__NBT_SIZE)); + + if (len #include #include @@ -167,6 +171,8 @@ int nb_count( netbyte_store *store ); int nb_type( netbyte_store *store, int count, __NBT_TYPED **type ); int nb_val( netbyte_store *store, int count, __nb_type **type ); int nb_fread( netbyte_store *store, int fd); +/*check if data may contain full netbyte buffer*/ +int nb_check_buf(uint8_t *data, int len, int *detected_size); //print all all values in netbyte string int nb_print(netbyte_store *store); @@ -188,4 +194,8 @@ void nb_tok_destroy(nb_tok_arr *arr); int nb_parse(char *str, nb_tok_arr *arr); +#ifdef __cplusplus +} +#endif + #endif \ No newline at end of file -- cgit v1.2.3