diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-01 18:22:39 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-01 18:22:39 +0000 |
commit | ea96823f2626e2a4178eec54f8a78a666d376ac1 (patch) | |
tree | d6fd63606de3355d2e0f7bb2ab751116095a1451 /res | |
parent | 1c4fdfd503883d806ba05da5d0e9156b54a4d51b (diff) |
fix a bunch of potential problems found by gcc 4.3.x, primarily bare strings being passed to printf()-like functions and ignored results from read()/write() and friends
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@153337 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r-- | res/res_agi.c | 5 | ||||
-rw-r--r-- | res/res_crypto.c | 9 | ||||
-rw-r--r-- | res/res_indications.c | 2 | ||||
-rw-r--r-- | res/res_musiconhold.c | 20 |
4 files changed, 26 insertions, 10 deletions
diff --git a/res/res_agi.c b/res/res_agi.c index a60155087..a2ff4ef3e 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -1870,7 +1870,8 @@ static enum agi_result run_agi(struct ast_channel *chan, char *request, AGI *agi /* If it's voice, write it to the audio pipe */ if ((agi->audio > -1) && (f->frametype == AST_FRAME_VOICE)) { /* Write, ignoring errors */ - write(agi->audio, f->data, f->datalen); + if (write(agi->audio, f->data, f->datalen) < 0) { + } } ast_frfree(f); } @@ -1959,7 +1960,7 @@ static int handle_showagi(int fd, int argc, char *argv[]) if (argc > 2) { e = find_command(argv + 2, 1); if (e) - ast_cli(fd, e->usage); + ast_cli(fd, "%s", e->usage); else { if (find_command(argv + 2, -1)) { return help_workhorse(fd, argv + 1); diff --git a/res/res_crypto.c b/res/res_crypto.c index eea8356af..c2c33d015 100644 --- a/res/res_crypto.c +++ b/res/res_crypto.c @@ -118,7 +118,11 @@ static int pw_cb(char *buf, int size, int rwflag, void *userdata) if (key->infd > -1) { snprintf(prompt, sizeof(prompt), ">>>> passcode for %s key '%s': ", key->ktype == AST_KEY_PRIVATE ? "PRIVATE" : "PUBLIC", key->name); - write(key->outfd, prompt, strlen(prompt)); + if (write(key->outfd, prompt, strlen(prompt)) < 0) { + /* Note that we were at least called */ + key->infd = -2; + return -1; + } memset(buf, 0, sizeof(buf)); tmp = ast_hide_password(key->infd); memset(buf, 0, size); @@ -194,8 +198,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i /* Calculate a "whatever" quality md5sum of the key */ char buf[256]; memset(buf, 0, 256); - fgets(buf, sizeof(buf), f); - if (!feof(f)) { + if (fgets(buf, sizeof(buf), f)) { MD5Update(&md5, (unsigned char *) buf, strlen(buf)); } } diff --git a/res/res_indications.c b/res/res_indications.c index 2147546af..05382a0cb 100644 --- a/res/res_indications.c +++ b/res/res_indications.c @@ -179,7 +179,7 @@ static int handle_show_indications(int fd, int argc, char *argv[]) if (tz->nrringcadence) j--; ast_copy_string(buf+j,"\n",sizeof(buf)-j); - ast_cli(fd,buf); + ast_cli(fd, "%s", buf); for (ts=tz->tones; ts; ts=ts->next) ast_cli(fd,"%-7.7s %-15.15s %s\n",tz->country,ts->name,ts->data); break; diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index ed2b55f0e..255f8d5d9 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -482,7 +482,10 @@ static int spawn_mp3(struct mohclass *class) } } /* Child */ - chdir(class->dir); + if (chdir(class->dir) < 0) { + ast_log(LOG_WARNING, "chdir() failed: %s\n", strerror(errno)); + _exit(1); + } if (ast_test_flag(class, MOH_CUSTOM)) { execv(argv[0], argv); } else { @@ -817,8 +820,14 @@ static int moh_scan_files(struct mohclass *class) { class->total_files = 0; dirnamelen = strlen(class->dir) + 2; - getcwd(path, sizeof(path)); - chdir(class->dir); + if (!getcwd(path, sizeof(path))) { + ast_log(LOG_WARNING, "getcwd() failed: %s\n", strerror(errno)); + return -1; + } + if (chdir(class->dir) < 0) { + ast_log(LOG_WARNING, "chdir() failed: %s\n", strerror(errno)); + return -1; + } while ((files_dirent = readdir(files_DIR))) { /* The file name must be at least long enough to have the file type extension */ if ((strlen(files_dirent->d_name) < 4)) @@ -857,7 +866,10 @@ static int moh_scan_files(struct mohclass *class) { } closedir(files_DIR); - chdir(path); + if (chdir(path) < 0) { + ast_log(LOG_WARNING, "chdir() failed: %s\n", strerror(errno)); + return -1; + } return class->total_files; } |