diff --git a/gtests/net/packetdrill/script.c b/gtests/net/packetdrill/script.c
index 250dcd4c6531cb2e9006460a0b53eb3464dea65f..3b8c373a4a2294be31b2438c99027aacc76aeecf 100644
--- a/gtests/net/packetdrill/script.c
+++ b/gtests/net/packetdrill/script.c
@@ -266,7 +266,7 @@ char *flags_to_string(struct flag_name *flags_array, u64 flags)
 static int unescape_cstring_expression(const char *input_string,
 				       struct expression *out, char **error)
 {
-	int bytes = strlen(input_string);
+	int bytes = strlen(input_string) + 1;
 	out->type = EXPR_STRING;
 	out->value.string = (char *)malloc(bytes);
 	const char *c_in = input_string;
@@ -305,6 +305,7 @@ static int unescape_cstring_expression(const char *input_string,
 		++c_in;
 		++c_out;
 	}
+	*c_out = *c_in;
 	return STATUS_OK;
 }