modelJobToSubmit built the C job_startinfo_t without setting execuser, so the controller forwarded a NULL execuser in the startjob request and the worker ran every job as "nobody". Now the submit carries the resolved exec user: an explicit exec_user wins, otherwise the job runs as the submitting user. - add resolveExecUser() (plain-Go, unit-testable) + TestResolveExecUser - set si.execuser in modelJobToSubmit, free it in freeJobSubmit Note: deploying this exposed an ASAN heap-use-after-free in the apiserver's submit/notification path (strncpy reading freed memory); the fix is committed but needs the memory-lifecycle investigation before it can ship safely. Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| auth | ||
| clib.go | ||
| config.go | ||
| control_host_test.go | ||
| convert.go | ||
| convert_pure.go | ||
| convert_test.go | ||
| handler.go | ||
| handler_test.go | ||
| heartbeat.go | ||
| heartbeat_test.go | ||
| integration_test.go | ||
| notification.go | ||
| peers.go | ||
| peers_test.go | ||
| stub.go | ||
| stub_funcs_test.go | ||
| val_helpers.h | ||
| wire_dispatch_support.go | ||
| wire_dispatch_test.go | ||