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
This commit is contained in:
Harald Welte 2020-05-24 16:03:56 +02:00
parent 5c860acbb5
commit e580c93169
5 changed files with 8 additions and 9 deletions

View File

@ -48,7 +48,7 @@ int frontend_request_modem_reset(struct bankd_client *bc);
int frontend_handle_card2modem(struct bankd_client *bc, const uint8_t *data, size_t len); 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_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_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 */ /* main.c */

View File

@ -75,9 +75,9 @@ static char **build_script_env(struct bankd_client *bc, const char *cause)
env[i++] = talloc_asprintf(env, "REMSIM_CAUSE=%s", cause); env[i++] = talloc_asprintf(env, "REMSIM_CAUSE=%s", cause);
/* ask frontend to append any frontend-speccific additional environment vars */ /* 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) if (rc > 0)
i += rc; i = rc;
/* terminate last entry */ /* terminate last entry */
env[i++] = NULL; env[i++] = NULL;

View File

@ -206,9 +206,9 @@ int frontend_handle_slot_status(struct bankd_client *bc, const SlotPhysStatus_t
return 0; 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;
} }
/*********************************************************************** /***********************************************************************

View File

@ -54,9 +54,9 @@ int frontend_handle_slot_status(struct bankd_client *bc, const SlotPhysStatus_t
return 0; 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;
} }

View File

@ -361,10 +361,9 @@ int frontend_handle_slot_status(struct bankd_client *bc, const SlotPhysStatus_t
return 0; 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; struct osmo_st2_cardem_inst *ci = bc->cardem;
int i = 0;
if (max_env < 4) if (max_env < 4)
return -ENOSPC; return -ENOSPC;