Skip to content

Commit 75d6075

Browse files
committed
Don't store getenv pointer as it can become invalid
1 parent dd19f89 commit 75d6075

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

ddtrace.sym

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ ddtrace_metric_register_buffer
1313
ddtrace_metric_add_point
1414
ddtrace_emit_asm_event
1515
ddtrace_loaded_by_ssi
16-
ddtrace_ssi_injection_enabled
1716
ddtrace_ssi_forced_injection_enabled
1817
ddog_remote_config_reader_for_path
1918
ddog_remote_config_read

ext/telemetry.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ ZEND_EXTERN_MODULE_GLOBALS(ddtrace);
1212

1313
// These globals are set by the SSI loader
1414
DDTRACE_PUBLIC bool ddtrace_loaded_by_ssi = false;
15-
DDTRACE_PUBLIC char *ddtrace_ssi_injection_enabled = NULL;
16-
DDTRACE_PUBLIC char *ddtrace_ssi_forced_injection_enabled = NULL;
15+
DDTRACE_PUBLIC bool ddtrace_ssi_forced_injection_enabled = false;
1716

1817
zend_long dd_composer_hook_id;
1918
ddog_QueueId dd_bgs_queued_id;
@@ -170,11 +169,13 @@ void ddtrace_telemetry_finalize(void) {
170169
// Send extra internal configuration
171170
ddog_CharSlice instrumentation_source = ddtrace_loaded_by_ssi ? DDOG_CHARSLICE_C("ssi") : DDOG_CHARSLICE_C("manual");
172171
ddog_sidecar_telemetry_enqueueConfig_buffer(buffer, DDOG_CHARSLICE_C("instrumentation_source"), instrumentation_source, DDOG_CONFIGURATION_ORIGIN_DEFAULT, DDOG_CHARSLICE_C(""));
173-
if (ddtrace_ssi_injection_enabled) {
174-
ddog_sidecar_telemetry_enqueueConfig_buffer(buffer, DDOG_CHARSLICE_C("ssi_injection_enabled"), (ddog_CharSlice) {.ptr = ddtrace_ssi_injection_enabled, .len = strlen(ddtrace_ssi_injection_enabled)}, DDOG_CONFIGURATION_ORIGIN_ENV_VAR, DDOG_CHARSLICE_C(""));
175-
}
176-
if (ddtrace_ssi_forced_injection_enabled) {
177-
ddog_sidecar_telemetry_enqueueConfig_buffer(buffer, DDOG_CHARSLICE_C("ssi_forced_injection_enabled"), (ddog_CharSlice) {.ptr = ddtrace_ssi_forced_injection_enabled, .len = strlen(ddtrace_ssi_forced_injection_enabled)}, DDOG_CONFIGURATION_ORIGIN_ENV_VAR, DDOG_CHARSLICE_C(""));
172+
173+
ddog_CharSlice ssi_forced = ddtrace_ssi_forced_injection_enabled ? DDOG_CHARSLICE_C("True") : DDOG_CHARSLICE_C("False");
174+
ddog_sidecar_telemetry_enqueueConfig_buffer(buffer, DDOG_CHARSLICE_C("ssi_forced_injection_enabled"), ssi_forced, DDOG_CONFIGURATION_ORIGIN_ENV_VAR, DDOG_CHARSLICE_C(""));
175+
176+
char *injection_enabled = getenv("DD_INJECTION_ENABLED");
177+
if (injection_enabled) {
178+
ddog_sidecar_telemetry_enqueueConfig_buffer(buffer, DDOG_CHARSLICE_C("ssi_injection_enabled"), (ddog_CharSlice) {.ptr = injection_enabled, .len = strlen(injection_enabled)}, DDOG_CONFIGURATION_ORIGIN_ENV_VAR, DDOG_CHARSLICE_C(""));
178179
}
179180

180181
// Send information about explicitly disabled integrations

loader/dd_library_loader.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -234,13 +234,9 @@ static void ddtrace_pre_minit_hook(injected_ext *config, zend_module_entry *modu
234234
if (ddtrace_loaded_by_ssi) {
235235
*ddtrace_loaded_by_ssi = true;
236236
}
237-
char **ddtrace_ssi_injection_enabled = (char **)DL_FETCH_SYMBOL(module->handle, "ddtrace_ssi_injection_enabled");
238-
if (ddtrace_ssi_injection_enabled) {
239-
*ddtrace_ssi_injection_enabled = getenv("DD_INJECTION_ENABLED");
240-
}
241-
char **ddtrace_ssi_forced_injection_enabled = (char **)DL_FETCH_SYMBOL(module->handle, "ddtrace_ssi_forced_injection_enabled");
237+
bool *ddtrace_ssi_forced_injection_enabled = (bool *)DL_FETCH_SYMBOL(module->handle, "ddtrace_ssi_forced_injection_enabled");
242238
if (ddtrace_ssi_forced_injection_enabled) {
243-
*ddtrace_ssi_forced_injection_enabled = force_load ? "True" : "False";
239+
*ddtrace_ssi_forced_injection_enabled = force_load;
244240
}
245241
}
246242

0 commit comments

Comments
 (0)