From: Tilghman Lesher Date: Tue, 13 Jul 2010 19:00:02 +0000 (+0000) Subject: It really cannot fail in the places below, but the stupid compiler doesn't know that. X-Git-Tag: 11.0.0-beta1~2677 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc9efc4ff51347a2b6eaa823b744742ab0a13f07;p=thirdparty%2Fasterisk.git It really cannot fail in the places below, but the stupid compiler doesn't know that. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@276120 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/funcs/func_env.c b/funcs/func_env.c index 24f76b3166..c2fc746f5c 100644 --- a/funcs/func_env.c +++ b/funcs/func_env.c @@ -498,7 +498,10 @@ static int file_read(struct ast_channel *chan, const char *cmd, char *data, stru return 0; } - fseeko(ff, 0, SEEK_END); + if (fseeko(ff, 0, SEEK_END) < 0) { + ast_log(LOG_ERROR, "Cannot seek to end of '%s': %s\n", args.filename, strerror(errno)); + return -1; + } flength = ftello(ff); if (offset < 0) { @@ -573,6 +576,7 @@ static int file_read(struct ast_channel *chan, const char *cmd, char *data, stru fclose(ff); return -1; } + flength = ftello(ff); if (length == LLONG_MAX) { @@ -876,8 +880,12 @@ static int file_write(struct ast_channel *chan, const char *cmd, char *data, con /* Write out the value, then write just up until where we last moved some data */ if (fwrite(value, 1, vlength, ff) < vlength) { ast_log(LOG_ERROR, "Short write?!!\n"); - } else if (fwrite(fbuf, 1, (foplen = lastwritten - ftello(ff)), ff) < foplen) { - ast_log(LOG_ERROR, "Short write?!!\n"); + } else { + off_t curpos = ftello(ff); + foplen = lastwritten - curpos; + if (fwrite(fbuf, 1, foplen, ff) < foplen) { + ast_log(LOG_ERROR, "Short write?!!\n"); + } } fclose(ff); } @@ -1153,8 +1161,12 @@ static int file_write(struct ast_channel *chan, const char *cmd, char *data, con ast_log(LOG_ERROR, "Short write?!!\n"); fclose(ff); return -1; - } else if (fwrite(fbuf, 1, (foplen = lastwritten - ftello(ff)), ff) < foplen) { - ast_log(LOG_ERROR, "Short write?!!\n"); + } else { + off_t curpos = ftello(ff); + foplen = lastwritten - curpos; + if (fwrite(fbuf, 1, foplen, ff) < foplen) { + ast_log(LOG_ERROR, "Short write?!!\n"); + } } fclose(ff); }