From: Brian G. <ge...@us...> - 2008-01-15 15:50:51
|
Update of /cvsroot/playerstage/code/player/client_libs/libplayerc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18431 Modified Files: client.c Log Message: added code to handle improperly unpacked message Index: client.c =================================================================== RCS file: /cvsroot/playerstage/code/player/client_libs/libplayerc/client.c,v retrieving revision 1.91 retrieving revision 1.92 diff -C2 -d -r1.91 -r1.92 *** client.c 7 Dec 2007 01:50:14 -0000 1.91 --- client.c 15 Jan 2008 23:50:52 -0000 1.92 *************** *** 1032,1037 **** if (header->size > PLAYERXDR_MAX_MESSAGE_SIZE - PLAYERXDR_MSGHDR_SIZE) { ! PLAYERC_ERR1("packet is too large, %d bytes", header->size); ! return -1; } --- 1032,1036 ---- if (header->size > PLAYERXDR_MAX_MESSAGE_SIZE - PLAYERXDR_MSGHDR_SIZE) { ! PLAYERC_WARN1("packet is too large, %d bytes", header->size); } *************** *** 1070,1074 **** // Locate the appropriate unpacking function for the message body if(!(packfunc = playerxdr_get_packfunc(header->addr.interf, header->type, ! header->subtype))) { // TODO: Allow the user to register a callback to handle unsupported --- 1069,1073 ---- // Locate the appropriate unpacking function for the message body if(!(packfunc = playerxdr_get_packfunc(header->addr.interf, header->type, ! header->subtype))) { // TODO: Allow the user to register a callback to handle unsupported *************** *** 1076,1079 **** --- 1075,1085 ---- PLAYERC_ERR4("skipping message from %s:%u with unsupported type %s:%u", interf_to_str(header->addr.interf), header->addr.index, msgtype_to_str(header->type), header->subtype); + + // Slide over the body + memmove(client->read_xdrdata, + client->read_xdrdata + header->size, + client->read_xdrdata_len - header->size); + client->read_xdrdata_len -= header->size; + return(-1); } |