]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust/lua: use lua_pushlstring for strings
authorJason Ish <ish@unx.ca>
Fri, 16 Jun 2017 05:39:26 +0000 (23:39 -0600)
committerJason Ish <ish@unx.ca>
Sat, 17 Jun 2017 16:32:37 +0000 (10:32 -0600)
Lua strings can contain NULLs, and Rust strings are UTF8 which
can also contain NULLs. Use pushlstring so a NULL containing
string can be pushed.

rust/src/lua.rs

index f225dccccd4d100432e4d1b978d1c74e4b23bdfb..a640b11cc153f63eb968494c24c3cc43dd8fb9c8 100644 (file)
@@ -15,7 +15,6 @@
  * 02110-1301, USA.
  */
 
-use std::ffi::CString;
 use std::os::raw::c_char;
 use std::os::raw::c_int;
 use std::os::raw::c_long;
@@ -26,7 +25,7 @@ pub enum CLuaState {}
 extern {
     fn lua_createtable(lua: *mut CLuaState, narr: c_int, nrec: c_int);
     fn lua_settable(lua: *mut CLuaState, idx: c_long);
-    fn lua_pushstring(lua: *mut CLuaState, s: *const c_char);
+    fn lua_pushlstring(lua: *mut CLuaState, s: *const c_char, len: usize);
     fn lua_pushinteger(lua: *mut CLuaState, n: c_long);
 }
 
@@ -50,7 +49,7 @@ impl LuaState {
 
     pub fn pushstring(&self, val: &str) {
         unsafe {
-            lua_pushstring(self.lua, CString::new(val).unwrap().as_ptr());
+            lua_pushlstring(self.lua, val.as_ptr() as *const c_char, val.len());
         }
     }