avoid talloc abort in simtrace2 frontend_append_script_env()

talloc requires a valid context for the allocation, we cannot use
env[i] as context.

Change-Id: I82b5e6b91b39d6f5c2a7492adb8c6193083e0d70
diff --git a/src/client/client.h b/src/client/client.h
index b828882..0024f52 100644
--- a/src/client/client.h
+++ b/src/client/client.h
@@ -48,7 +48,7 @@
 int frontend_handle_card2modem(struct bankd_client *bc, const uint8_t *data, size_t len);
 int frontend_handle_set_atr(struct bankd_client *bc, const uint8_t *data, size_t len);
 int frontend_handle_slot_status(struct bankd_client *bc, const SlotPhysStatus_t *sts);
-int frontend_append_script_env(struct bankd_client *bc, char **env, size_t max_env);
+int frontend_append_script_env(struct bankd_client *bc, char **env, int idx, size_t max_env);
 
 /* main.c */
 
diff --git a/src/client/main_fsm.c b/src/client/main_fsm.c
index 0674f6c..673b19e 100644
--- a/src/client/main_fsm.c
+++ b/src/client/main_fsm.c
@@ -75,9 +75,9 @@
 	env[i++] = talloc_asprintf(env, "REMSIM_CAUSE=%s", cause);
 
 	/* ask frontend to append any frontend-speccific additional environment vars */
-	rc = frontend_append_script_env(bc, env+i, 256-i);
+	rc = frontend_append_script_env(bc, env, i, 256-i-1);
 	if (rc > 0)
-		i += rc;
+		i = rc;
 
 	/* terminate last entry */
 	env[i++] = NULL;
diff --git a/src/client/user_ifdhandler.c b/src/client/user_ifdhandler.c
index 188d3a6..a690503 100644
--- a/src/client/user_ifdhandler.c
+++ b/src/client/user_ifdhandler.c
@@ -206,9 +206,9 @@
 	return 0;
 }
 
-int frontend_append_script_env(struct bankd_client *bc, char **env, size_t max_env)
+int frontend_append_script_env(struct bankd_client *bc, char **env, int idx, size_t max_env)
 {
-	return 0;
+	return idx;
 }
 
 /***********************************************************************
diff --git a/src/client/user_shell.c b/src/client/user_shell.c
index 40bcddd..9c804c6 100644
--- a/src/client/user_shell.c
+++ b/src/client/user_shell.c
@@ -54,9 +54,9 @@
 	return 0;
 }
 
-int frontend_append_script_env(struct bankd_client *bc, char **env, size_t max_env)
+int frontend_append_script_env(struct bankd_client *bc, char **env, int idx, size_t max_env)
 {
-	return 0;
+	return idx;
 }
 
 
diff --git a/src/client/user_simtrace2.c b/src/client/user_simtrace2.c
index 5d5bfc1..f84db9d 100644
--- a/src/client/user_simtrace2.c
+++ b/src/client/user_simtrace2.c
@@ -361,10 +361,9 @@
 	return 0;
 }
 
-int frontend_append_script_env(struct bankd_client *bc, char **env, size_t max_env)
+int frontend_append_script_env(struct bankd_client *bc, char **env, int i, size_t max_env)
 {
 	struct osmo_st2_cardem_inst *ci = bc->cardem;
-	int i = 0;
 
 	if (max_env < 4)
 		return -ENOSPC;