http://rdesktop.cvs.sourceforge.net/rdesktop/rdesktop/rdesktop.c?r1=1.161&r2=1.162&view=patch&pathrev=HEAD --- rdesktop.c 2007/08/30 04:47:36 1.161 +++ rdesktop.c 2008/01/05 05:43:02 1.162 @@ -1131,16 +1131,16 @@ /* realloc; exit if out of memory */ void * -xrealloc(void *oldmem, int size) +xrealloc(void *oldmem, size_t size) { void *mem; - if (size < 1) + if (size == 0) size = 1; mem = realloc(oldmem, size); if (mem == NULL) { - error("xrealloc %d\n", size); + error("xrealloc %ld\n", size); exit(1); } return mem; http://rdesktop.cvs.sourceforge.net/rdesktop/rdesktop/proto.h?r1=1.109&r2=1.110&view=patch --- proto.h 2007/06/18 12:00:33 1.109 +++ proto.h 2008/01/05 05:43:02 1.110 @@ -111,7 +111,7 @@ void *xmalloc(int size); void exit_if_null(void *ptr); char *xstrdup(const char *s); -void *xrealloc(void *oldmem, int size); +void *xrealloc(void *oldmem, size_t size); void xfree(void *mem); void error(char *format, ...); void warning(char *format, ...); @@ -137,7 +137,7 @@ void rdp5_process(STREAM s); /* rdp.c */ void rdp_out_unistr(STREAM s, char *string, int len); -int rdp_in_unistr(STREAM s, char *string, int uni_len); +int rdp_in_unistr(STREAM s, char *string, int str_len, int in_len); void rdp_send_input(uint32 time, uint16 message_type, uint16 device_flags, uint16 param1, uint16 param2); void rdp_send_client_window_status(int status); http://rdesktop.cvs.sourceforge.net/rdesktop/rdesktop/rdpdr.c?r1=1.52&r2=1.53&view=patch --- rdpdr.c 2007/07/03 14:08:06 1.52 +++ rdpdr.c 2008/01/05 05:43:02 1.53 @@ -429,7 +429,7 @@ if (length && (length / 2) < 256) { - rdp_in_unistr(s, filename, length); + rdp_in_unistr(s, filename, sizeof(filename), length); convert_to_unix_filename(filename); } else @@ -622,7 +622,7 @@ in_uint8s(s, 0x17); if (length && length < 2 * 255) { - rdp_in_unistr(s, filename, length); + rdp_in_unistr(s, filename, sizeof(filename), length); convert_to_unix_filename(filename); } else http://rdesktop.cvs.sourceforge.net/rdesktop/rdesktop/printercache.c?r1=1.11&r2=1.12&view=patch --- printercache.c 2007/01/08 04:47:05 1.11 +++ printercache.c 2008/01/05 05:43:02 1.12 @@ -245,8 +245,8 @@ /* NOTE - 'driver' doesn't contain driver, it contains the new printer name */ - rdp_in_unistr(s, printer, printer_length); - rdp_in_unistr(s, driver, driver_length); + rdp_in_unistr(s, printer, sizeof(printer), printer_length); + rdp_in_unistr(s, driver, sizeof(driver), driver_length); printercache_rename_blob(printer, driver); break; @@ -254,7 +254,7 @@ case 3: /* delete item */ in_uint8(s, printer_unicode_length); in_uint8s(s, 0x3); /* padding */ - printer_length = rdp_in_unistr(s, printer, printer_unicode_length); + rdp_in_unistr(s, printer, sizeof(printer), printer_unicode_length); printercache_unlink_blob(printer); break; @@ -264,7 +264,7 @@ if (printer_unicode_length < 2 * 255) { - rdp_in_unistr(s, printer, printer_unicode_length); + rdp_in_unistr(s, printer, sizeof(printer), printer_unicode_length); printercache_save_blob(printer, s->p, blob_length); } break; http://rdesktop.cvs.sourceforge.net/rdesktop/rdesktop/disk.c?r1=1.62&r2=1.63&view=patch --- disk.c 2007/04/10 11:22:10 1.62 +++ disk.c 2008/01/05 05:43:02 1.63 @@ -802,7 +802,7 @@ if (length && (length / 2) < 256) { - rdp_in_unistr(in, newname, length); + rdp_in_unistr(in, newname, sizeof(newname), length); convert_to_unix_filename(newname); } else