Le 12/04/16 à 07:14, John Crispin a écrit : > > > On 03/12/2016 18:58, Florian Fainelli wrote: >> Fixes: >> >> uclient-http.c:385:8: error: ignoring return value of 'fread', declared with >> attribute warn_unused_result [-Werror=unused-result] >> fread(&val, sizeof(val), 1, f); >> ^ >> >> uclient-fetch.c: In function 'main': >> uclient-fetch.c:664:12: error: ignoring return value of 'asprintf', declared >> with attribute warn_unused_result [-Werror=unused-result] >> asprintf(&auth_str, "%s:%s", username, password); >> ^ >> uclient-fetch.c: In function 'read_data_cb': >> uclient-fetch.c:269:9: error: ignoring return value of 'write', declared >> with attribute warn_unused_result [-Werror=unused-result] >> write(output_fd, buf, len); >> >> Signed-off-by: Florian Fainelli <f.faine...@gmail.com> >> --- >> uclient-fetch.c | 16 +++++++++++----- >> uclient-http.c | 5 ++++- >> 2 files changed, 15 insertions(+), 6 deletions(-) >> >> diff --git a/uclient-fetch.c b/uclient-fetch.c >> index 4c603fbc1945..db13e81bf8d0 100644 >> --- a/uclient-fetch.c >> +++ b/uclient-fetch.c >> @@ -254,6 +254,7 @@ static void header_done_cb(struct uclient *cl) >> static void read_data_cb(struct uclient *cl) >> { >> char buf[256]; >> + size_t n; >> int len; >> >> if (!no_output && output_fd < 0) >> @@ -265,8 +266,11 @@ static void read_data_cb(struct uclient *cl) >> return; >> >> out_bytes += len; >> - if (!no_output) >> - write(output_fd, buf, len); >> + if (!no_output) { >> + n = write(output_fd, buf, len); >> + if (n < len) >> + return; >> + } >> } >> } >> >> @@ -660,9 +664,11 @@ int main(int argc, char **argv) >> uloop_init(); >> >> if (username) { >> - if (password) >> - asprintf(&auth_str, "%s:%s", username, password); >> - else >> + if (password) { >> + rc = asprintf(&auth_str, "%s:%s", username, password); >> + if (rc < 0) >> + return rc; >> + } else >> auth_str = username; >> } >> >> diff --git a/uclient-http.c b/uclient-http.c >> index 8d26bd4884be..80f40d0e40e3 100644 >> --- a/uclient-http.c >> +++ b/uclient-http.c >> @@ -379,11 +379,14 @@ get_cnonce(char *dest) >> { >> uint32_t val = 0; >> FILE *f; >> + size_t n; >> >> f = fopen("/dev/urandom", "r"); >> if (f) { >> - fread(&val, sizeof(val), 1, f); >> + n = fread(&val, sizeof(val), 1, f); >> fclose(f); >> + if (n != sizeof(val)) >> + return; >> } > > from the man page "On success, fread() and fwrite() return the number of > items read or written. This number equals the number of bytes > transferred only when size is 1. If an error occurs, or the end of the > file is reached, the return value is a short item count (or zero)." > so the check should be (n != 1) i think.
Humm yes good point, thanks! -- Florian _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev