[PATCH 6/6] main: Rename MAX_ALT_NAME_LEN and bump it to 1023

Tormod Volden lists.tormod at gmail.com
Wed Aug 31 23:26:25 CEST 2011


From: Tormod Volden <debian.tormod at gmail.com>

The way we retrieve these strings we just have to make sure the buffer
is big enough to not truncate the string. I do not know if the USB
protocol sets any limit to the string length. If not, a possible TODO
would be to add a warning if the returned string filled the buffer.
---
 src/main.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/main.c b/src/main.c
index 0b1cd36..b9b1985 100644
--- a/src/main.c
+++ b/src/main.c
@@ -54,6 +54,9 @@ int verbose = 0;
 /* If we really have to guess (non-compliant devices) */
 #define DEFAULT_TRANSFER_SIZE 1024
 
+/* Not sure if there is any upper limit */
+#define MAX_ALT_NAME_LEN 1023
+
 /* define a portable function for reading a 16bit little-endian word */
 unsigned short get_int16_le(const void *p)
 {
@@ -188,8 +191,6 @@ static int count_matching_dfu_if(struct dfu_if *dif)
 	return dif->count;
 }
 
-#define MAX_STR_LEN 64
-
 /* Retrieves alternate interface name string.
  * Returns string length, or negative on error */
 static int get_alt_name(struct dfu_if *dfu_if, unsigned char *name)
@@ -213,7 +214,7 @@ static int get_alt_name(struct dfu_if *dfu_if, unsigned char *name)
 		if (dfu_if->dev_handle)
 			ret = libusb_get_string_descriptor_ascii(
 					dfu_if->dev_handle, alt_name_str_idx,
-					name, MAX_STR_LEN);
+					name, MAX_ALT_NAME_LEN);
 	}
 	libusb_free_config_descriptor(cfg);
 	return ret;
@@ -221,7 +222,7 @@ static int get_alt_name(struct dfu_if *dfu_if, unsigned char *name)
 
 static int print_dfu_if(struct dfu_if *dfu_if, void *v)
 {
-	unsigned char name[MAX_STR_LEN+1] = "UNDEFINED";
+	unsigned char name[MAX_ALT_NAME_LEN+1] = "UNDEFINED";
 
 	get_alt_name(dfu_if, name);
 
@@ -254,7 +255,7 @@ static int list_dfu_interfaces(libusb_context *ctx)
 
 static int alt_by_name(struct dfu_if *dfu_if, void *v)
 {
-	unsigned char name[MAX_STR_LEN+1];
+	unsigned char name[MAX_ALT_NAME_LEN+1];
 
 	if (get_alt_name(dfu_if, name) < 0)
 		return 0;
@@ -513,7 +514,7 @@ int main(int argc, char **argv)
 	libusb_context *ctx;
 	struct dfu_file file;
 	char *alt_name = NULL; /* query alt name if non-NULL */
-	unsigned char active_alt_name[MAX_STR_LEN+1];
+	unsigned char active_alt_name[MAX_ALT_NAME_LEN+1];
 	char *end;
 	int final_reset = 0;
 	int ret;
-- 
1.7.5.4




More information about the devel mailing list