From fd0fcba9f5b2ec9cb504d6f322c2dd89ab891e08 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 17 Sep 2013 21:25:18 -0700 Subject: [PATCH] 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. --- src/libstd/str.rs | 4 ++-- 1 file 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);