[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tools: fix several "format-truncation" errors with GCC 7
Zhongze Liu writes ("[PATCH] tools: fix several "format-truncation" errors with GCC 7"): > replace several snprintf with asprintf in xenpmd and tools/ocmal/xc > to fix the "format-truncation" errors caused by incorrect size of buffers. Thanks for paying attention to the quality of our code, but: I wonder whether this cure is worse than the disease. Using asprintf everywhere means additional error handling (which you have erroneously omitted) and additional potential for leaks etc. (for which I haven't analysed your patch). You say `"format-truncation" errors' but you mean compiler warnings from -Wformat-truncation, turned into errors by -Werror. Is there any suggestion from a human that this code actually malfunctions ? Or does the compiler not just complain all the time about snprintf ? > - char error_str[256]; ... > - snprintf(error_str, sizeof(error_str), > - "%d: %s", errno, strerror(errno)); This will not truncate unless the xc error string is too long, which is not. > - snprintf(error_str, sizeof(error_str), > - "Unable to open XC interface"); > + asprintf(&error_str, "Unable to open XC interface"); This is a fixed string of course. > - char file_name[32]; ... > @@ -110,12 +112,16 @@ FILE *get_next_battery_file(DIR *battery_dir, > if ( strlen(dir_entries->d_name) < 4 ) > continue; > if ( battery_info_type == BIF ) > - snprintf(file_name, 32, BATTERY_INFO_FILE_PATH, > - dir_entries->d_name); > + rc = asprintf(&file_name, BATTERY_INFO_FILE_PATH, > + dir_entries->d_name); > else > - snprintf(file_name, 32, BATTERY_STATE_FILE_PATH, > - dir_entries->d_name); > - file = fopen(file_name, "r"); > + rc = asprintf(&file_name, BATTERY_STATE_FILE_PATH, > + dir_entries->d_name); These filenames are all very formulaic. I doubt they are being truncated even though the limit is only 32 bytes. Regards, Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |