Mercurial > hg > mlmmj
annotate src/chomp.c @ 753:b58fd7980358
Fix theoretically possible memory corruption by chomp()
A quick survey of callers of chomp() suggests this never could occur
in practice
author | Ben Schmidt |
---|---|
date | Wed, 06 Oct 2010 23:26:26 +1100 |
parents | 9935bcc6fc36 |
children |
rev | line source |
---|---|
0 | 1 /* Copyright (C) 2002, 2003 Mads Martin Joergensen <mmj at mmj.dk> |
2 * | |
3 * $Id$ | |
4 * | |
225 | 5 * Permission is hereby granted, free of charge, to any person obtaining a copy |
6 * of this software and associated documentation files (the "Software"), to | |
7 * deal in the Software without restriction, including without limitation the | |
8 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | |
9 * sell copies of the Software, and to permit persons to whom the Software is | |
10 * furnished to do so, subject to the following conditions: | |
11 * | |
12 * The above copyright notice and this permission notice shall be included in | |
13 * all copies or substantial portions of the Software. | |
14 * | |
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | |
21 * IN THE SOFTWARE. | |
0 | 22 */ |
23 | |
24 #include <string.h> | |
25 #include "chomp.h" | |
26 | |
27 char *chomp(char *str) | |
28 { | |
291 | 29 size_t i; |
30 | |
31 if(str == NULL) | |
32 return NULL; | |
33 | |
753
b58fd7980358
Fix theoretically possible memory corruption by chomp()
Ben Schmidt
parents:
583
diff
changeset
|
34 if(*str == '\0' || *str == '\n' || *str == '\r') { |
540 | 35 *str = '\0'; |
36 return str; | |
37 } | |
38 | |
291 | 39 i = strlen(str) - 1; |
0 | 40 |
583
9935bcc6fc36
Changed chomp() to also remove CR from CRLF sequences
mortenp
parents:
540
diff
changeset
|
41 while((str[i] == '\n') || (str[i] == '\r')) { |
0 | 42 str[i] = 0; |
43 i--; | |
44 } | |
45 | |
46 return str; | |
47 } |