diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-09-17 21:25:18 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-09-17 21:25:18 -0700 |
| commit | fd0fcba9f5b2ec9cb504d6f322c2dd89ab891e08 (patch) | |
| tree | c566374c964b6592f5d9729cdfb07bdb81f14ccf /src/libstd | |
| parent | 460021bdf2106ee76daf7d81ec7e50e972e26901 (diff) | |
| download | rust-fd0fcba9f5b2ec9cb504d6f322c2dd89ab891e08.tar.gz rust-fd0fcba9f5b2ec9cb504d6f322c2dd89ab891e08.zip | |
std: Fix an invalid read in from_c_multistring
When `count` is `Some` this function was reading a byte past the end of the buffer.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/str.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libstd/str.rs b/src/libstd/str.rs index 93cac8797bb..9707d592a2e 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -1107,8 +1107,8 @@ pub mod raw { Some(limit) => (true, limit), None => (false, 0) }; - while(*(curr_ptr as *libc::c_char) != 0 as libc::c_char - && ((limited_count && ctr < limit) || !limited_count)) { + while(((limited_count && ctr < limit) || !limited_count) + && *(curr_ptr as *libc::c_char) != 0 as libc::c_char) { let env_pair = from_c_str( curr_ptr as *libc::c_char); result.push(env_pair); |
