FILE: fix retrieval of file contents when offset is specified
authorMatthew Jordan <mjordan@digium.com>
Sat, 14 Mar 2015 01:22:01 +0000 (01:22 +0000)
committerMatthew Jordan <mjordan@digium.com>
Sat, 14 Mar 2015 01:22:01 +0000 (01:22 +0000)
The loop that reads in a file was not correctly using the offset when
determining what bytes to append to the output. This patch corrects
the logic such that the correct portion of the file is extracted when an
offset is specified.

ASTERISK-21765
Reported by: John Zhong
Tested by: Matt Jordan, Di-Shi Sun
patches:
  file_read_390821.patch uploaded by Di-Shi Sun (License 5076)
........

Merged revisions 432935 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 432938 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432940 65c4cc65-6c06-0410-ace0-fbb531ad65f3

funcs/func_env.c

index 1d3e95c..0daa7f4 100644 (file)
@@ -561,7 +561,7 @@ static int file_read(struct ast_channel *chan, const char *cmd, char *data, stru
 
                        /* Don't go past the length requested */
                        if (off_i + toappend > offset + length) {
 
                        /* Don't go past the length requested */
                        if (off_i + toappend > offset + length) {
-                               toappend = length - off_i;
+                               toappend = offset + length - off_i;
                        }
 
                        ast_str_append_substr(buf, len, fbuf, toappend);
                        }
 
                        ast_str_append_substr(buf, len, fbuf, toappend);