return 2;
}
- //SCLogInfo("returning:");
- //PrintRawDataFp(stdout,fv->data.fv_str.value,fv->data.fv_str.value_len);
-
- /* we're using a buffer sized at a multiple of 4 as lua_pushlstring generates
- * invalid read errors in valgrind otherwise. Adding in a nul to be sure.
- *
- * Buffer size = len + 1 (for nul) + whatever makes it a multiple of 4 */
- size_t reallen = fv->data.fv_str.value_len;
- size_t buflen = fv->data.fv_str.value_len + 1 + ((fv->data.fv_str.value_len + 1) % 4);
- uint8_t buf[buflen];
- memset(buf, 0x00, buflen);
- memcpy(buf, fv->data.fv_str.value, fv->data.fv_str.value_len);
- buf[fv->data.fv_str.value_len] = '\0';
+ LuaPushStringBuffer(luastate, (const uint8_t *)fv->data.fv_str.value,
+ (size_t)fv->data.fv_str.value_len);
if (flow_lock == LUA_FLOW_NOT_LOCKED_BY_PARENT)
FLOWLOCK_UNLOCK(f);
- /* return value through luastate, as a luastring */
- lua_pushlstring(luastate, (char *)buf, reallen);
-
return 1;
}
lua_settable(tluajit->luastate, -3);
lua_pushstring (tluajit->luastate, luajit->buffername); /* stack at -2 */
- if (buffer_len % 4) {
- size_t tmpbuflen = buffer_len + (buffer_len % 4);
- uint8_t tmpbuf[tmpbuflen];
- memset(tmpbuf, 0x00, tmpbuflen);
- memcpy(tmpbuf, buffer, buffer_len);
- tmpbuf[buffer_len] = '\0';
- lua_pushlstring (tluajit->luastate, (const char *)tmpbuf, (size_t)buffer_len);
- } else {
- lua_pushlstring (tluajit->luastate, (const char *)buffer, (size_t)buffer_len);
- }
+ LuaPushStringBuffer(tluajit->luastate, (const uint8_t *)buffer, (size_t)buffer_len);
lua_settable(tluajit->luastate, -3);
int retval = lua_pcall(tluajit->luastate, 1, 1, 0);
if ((tluajit->flags & DATATYPE_PAYLOAD) && p->payload_len) {
lua_pushliteral(tluajit->luastate, "payload"); /* stack at -2 */
- lua_pushlstring (tluajit->luastate, (const char *)p->payload, (size_t)p->payload_len); /* stack at -3 */
+ LuaPushStringBuffer (tluajit->luastate, (const uint8_t *)p->payload, (size_t)p->payload_len); /* stack at -3 */
lua_settable(tluajit->luastate, -3);
}
if ((tluajit->flags & DATATYPE_PACKET) && GET_PKT_LEN(p)) {
lua_pushliteral(tluajit->luastate, "packet"); /* stack at -2 */
- lua_pushlstring (tluajit->luastate, (const char *)GET_PKT_DATA(p), (size_t)GET_PKT_LEN(p)); /* stack at -3 */
+ LuaPushStringBuffer (tluajit->luastate, (const uint8_t *)GET_PKT_DATA(p), (size_t)GET_PKT_LEN(p)); /* stack at -3 */
lua_settable(tluajit->luastate, -3);
}
if (tluajit->alproto == ALPROTO_HTTP) {
if ((tluajit->flags & DATATYPE_HTTP_REQUEST_LINE) && tx->request_line != NULL &&
bstr_len(tx->request_line) > 0) {
lua_pushliteral(tluajit->luastate, "http.request_line"); /* stack at -2 */
- lua_pushlstring (tluajit->luastate,
- (const char *)bstr_ptr(tx->request_line),
+ LuaPushStringBuffer(tluajit->luastate,
+ (const uint8_t *)bstr_ptr(tx->request_line),
bstr_len(tx->request_line));
lua_settable(tluajit->luastate, -3);
}