Hi David et all,
The following patch address many clang warnings.
Other people can see the patch here
http://anonscm.debian.org/gitweb/?p=pkg-boinc/boinc.git;a=blob;f=debian/patches/more_clang_warnings.patch;h=56bb29543205bdb06e295f5bdc4d3e914dfb96dc;hb=HEAD
The patch is from Steffen Moeller.
thanks
Gianfranco
--- a/client/app_control.cpp
+++ b/client/app_control.cpp
@@ -595,8 +595,8 @@
} else {
x = y;
}
- fgets(buf, 256, f); // read the \n
- fgets(buf, 256, f);
+ (void) fgets(buf, 256, f); // read the \n
+ (void) fgets(buf, 256, f);
strip_whitespace(buf);
fclose(f);
return true;
@@ -1446,13 +1446,13 @@
FILE* f = fopen(path, "r");
if (!f) return;
buf[0] = 0;
- fread(buf, 1, 4096, f);
+ size_t fr = fread(buf, 1, 4096, f);
fclose(f);
buf[4095] = 0;
double x;
// sanity checks - project and result name must match
//
- if (!parse_str(buf, "<project_master_url>", s, sizeof(s))) {
+ if (0 == fr || !parse_str(buf, "<project_master_url>", s, sizeof(s))) {
msg_printf(wup->project, MSG_INTERNAL_ERROR,
"no project URL in task state file"
);
--- a/client/cs_platforms.cpp
+++ b/client/cs_platforms.cpp
@@ -143,7 +143,7 @@
strlcat(cmdline," -m",256);
if ((f=popen(cmdline,"r"))) {
while (!std::feof(f)) {
- fgets(cmdline,256,f);
+ if (!fgets(cmdline,256,f)) break;
if (strstr(cmdline,"x86_64")) support64=1;
}
pclose(f);
@@ -200,7 +200,7 @@
f = popen(cmdline, "r");
if (f) {
while (!std::feof(f)) {
- fgets(cmdline,256,f);
+ if (!fgets(cmdline,256,f)) break;
// If the library is 32-bit ELF, then we're
// golden.
if (strstr(cmdline, "ELF") && strstr(cmdline, "32-bit")) support32=1;
--- a/lib/crypt.cpp
+++ b/lib/crypt.cpp
@@ -208,14 +208,17 @@
}
if (j != len) return ERR_NULL;
#else
- fscanf(f, "%d", &num_bits);
+ int fs = fscanf(f, "%d", &num_bits);
+ if (EOF == fs) return ERR_NULL;
key->bits = num_bits;
len = size - sizeof(key->bits);
for (i=0; i<len; i++) {
- fscanf(f, "%2x", &n);
+ fs = fscanf(f, "%2x", &n);
key->data[i] = n;
+ if (EOF == fs) return ERR_NULL;
}
- fscanf(f, ".");
+ fs = fscanf(f, ".");
+ if (EOF == fs) return ERR_NULL;
#endif
return 0;
}
--- a/lib/diagnostics.cpp
+++ b/lib/diagnostics.cpp
@@ -608,7 +608,7 @@
size = backtrace (array, 64);
// Anything that calls malloc here (i.e *printf()) will probably fail
// so we'll do it the hard way.
- write(fileno(stderr),"Stack trace (",strlen("Stack trace ("));
+ (void) write(fileno(stderr),"Stack trace (",strlen("Stack trace ("));
char mbuf[10];
char *p=mbuf+9;
int i=size;
@@ -617,10 +617,10 @@
*(p--)=i%10+'0';
i/=10;
}
- write(fileno(stderr),p+1,strlen(p+1));
- write(fileno(stderr)," frames):",strlen(" frames):"));
+ (void) write(fileno(stderr),p+1,strlen(p+1));
+ (void) write(fileno(stderr)," frames):",strlen(" frames):"));
mbuf[0]=10;
- write(fileno(stderr),mbuf,1);
+ (void) write(fileno(stderr),mbuf,1);
backtrace_symbols_fd(array, size, fileno(stderr));
#endif
--- a/client/hostinfo_unix.cpp
+++ b/client/hostinfo_unix.cpp
@@ -1244,11 +1244,12 @@
#endif
fd = popen(cmd, "r");
if (fd) {
- fgets(virtualbox_version, sizeof(virtualbox_version), fd);
- newlinePtr = strchr(virtualbox_version, '\n');
- if (newlinePtr) *newlinePtr = '\0';
- newlinePtr = strchr(virtualbox_version, '\r');
- if (newlinePtr) *newlinePtr = '\0';
+ if (fgets(virtualbox_version, sizeof(virtualbox_version), fd)) {
+ newlinePtr = strchr(virtualbox_version, '\n');
+ if (newlinePtr) *newlinePtr = '\0';
+ newlinePtr = strchr(virtualbox_version, '\r');
+ if (newlinePtr) *newlinePtr = '\0';
+ }
pclose(fd);
}
}
--- a/client/app_start.cpp
+++ b/client/app_start.cpp
@@ -858,7 +858,10 @@
char* argv[100];
char current_dir[1024];
- getcwd(current_dir, sizeof(current_dir));
+ if (NULL == getcwd(current_dir, sizeof(current_dir))) {
+ sprintf(buf, "Can't get cwd");
+ goto error;
+ }
sprintf(cmdline, "%s %s",
wup->command_line.c_str(), app_version->cmdline
@@ -1005,7 +1008,11 @@
// hook up stderr to a specially-named file
//
- freopen(STDERR_FILE, "a", stderr);
+ if (NULL == freopen(STDERR_FILE, "a", stderr)) {
+ perror("freopen stderr");
+ fflush(NULL);
+ _exit(errno);
+ }
if (!config.no_priority_change) {
#if HAVE_SETPRIORITY
--- a/api/graphics2_unix.cpp
+++ b/api/graphics2_unix.cpp
@@ -191,7 +191,9 @@
FILE *f = boinc_fopen("gfx_info", "r");
if (f) {
// ToDo: change this to XML parsing
- fscanf(f, "%d %d %d %d\n", &xpos, &ypos, &width, &height);
+ if (! fscanf(f, "%d %d %d %d\n", &xpos, &ypos, &width, &height)) {
+ fprintf(stderr,"Coud not parse parameters for xpos, ypos, width, height from glx_info file.\n");
+ }
fclose(f);
}
--- a/lib/procinfo_unix.cpp
+++ b/lib/procinfo_unix.cpp
@@ -219,9 +219,11 @@
sprintf(pidpath, "/proc/%s/stat", piddir->d_name);
fd = fopen(pidpath, "r");
if (fd) {
- fgets(buf, sizeof(buf), fd);
- retval = ps.parse(buf);
+ if (!fgets(buf, sizeof(buf), fd)) {
+ buf[0]=0;
+ }
fclose(fd);
+ retval = ps.parse(buf);
if (retval) {
final_retval = retval;
--- a/client/log_flags.cpp
+++ b/client/log_flags.cpp
@@ -519,7 +519,10 @@
#ifdef _WIN32
_chdir(config.data_dir);
#else
- chdir(config.data_dir);
+ if (chdir(config.data_dir)) {
+ msg_printf(NULL, MSG_INFO, "Could not change to config.data_dir");
+ return ERR_OPENDIR;
+ }
#endif
}
} else {
--- a/client/switcher.cpp
+++ b/client/switcher.cpp
@@ -47,6 +47,8 @@
char newlibs[256];
char *projectDirName;
+ errno=0;
+
strcpy(user_name, "boinc_project");
strcpy(group_name, "boinc_project");
@@ -74,12 +76,16 @@
// We are running setuid root, so setgid() sets real group ID,
// effective group ID and saved set_group-ID for this process
grp = getgrnam(group_name);
- if (grp) setgid(grp->gr_gid);
+ if (grp) {
+ if (setgid(grp->gr_gid)) goto error;
+ }
// We are running setuid root, so setuid() sets real user ID,
// effective user ID and saved set_user-ID for this process
pw = getpwnam(user_name);
- if (pw) setuid(pw->pw_uid);
+ if (pw) {
+ if (setuid(pw->pw_uid)) goto error;
+ }
// For unknown reasons, the LD_LIBRARY_PATH and DYLD_LIBRARY_PATH
// environment variables are not passed in to switcher, though all
@@ -126,7 +132,8 @@
execv(argv[1], argv+2);
+error:
// If we got here execv failed
- fprintf(stderr, "Process creation (%s) failed: errno=%d\n", argv[1], errno);
-
+ if (errno) fprintf(stderr, "Process creation (%s) failed: errno=%d\n", argv[1], errno);
+ return(errno);
}
--- a/lib/shmem.cpp
+++ b/lib/shmem.cpp
@@ -337,7 +337,10 @@
// area to all zeros because they write beyond the old EOF.
// See the lseek man page for details.
lseek(fd, size-1, SEEK_SET);
- write(fd, "\0", 1);
+ if (! write(fd, "\0", 1)) {
+ close(fd);
+ return ERR_SHMGET;
+ }
}
*pp = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, 0);
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.