From: Valentine Krasnobaeva Date: Fri, 12 Jul 2024 15:50:18 +0000 (+0200) Subject: MINOR: debug: store runtime uid/gid in postmortem X-Git-Tag: v3.1-dev4~51 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=baa4e1cf39f0492cb56f6d8c8f13e046154e37f5;p=thirdparty%2Fhaproxy.git MINOR: debug: store runtime uid/gid in postmortem Let's extend post_mortem to store runtime process uid and gid. This information is fed in feed_post_mortem_late(), just before calling run_poll_loop(). Like this we are sure that all configuration settings were successfully applied. --- diff --git a/src/debug.c b/src/debug.c index 268a2d3173..d110a12ec5 100644 --- a/src/debug.c +++ b/src/debug.c @@ -116,6 +116,8 @@ struct post_mortem { pid_t pid; uid_t boot_uid; gid_t boot_gid; + uid_t run_uid; + gid_t run_gid; #if defined(USE_LINUX_CAP) struct { // initial process capabilities @@ -565,10 +567,11 @@ static int debug_parse_cli_show_dev(char **args, char *payload, struct appctx *a for (i = 0; i < post_mortem.process.argc; i++) chunk_appendf(&trash, "%s ", post_mortem.process.argv[i]); chunk_appendf(&trash, "\n"); + chunk_appendf(&trash, " boot uid: %d\n", post_mortem.process.boot_uid); - chunk_appendf(&trash, " runtime uid: %d\n", geteuid()); + chunk_appendf(&trash, " runtime uid: %d\n", post_mortem.process.run_uid); chunk_appendf(&trash, " boot gid: %d\n", post_mortem.process.boot_gid); - chunk_appendf(&trash, " runtime gid: %d\n", getegid()); + chunk_appendf(&trash, " runtime gid: %d\n", post_mortem.process.run_gid); #if defined(USE_LINUX_CAP) /* let's dump saved in feed_post_mortem() initial capabilities sets */ @@ -2429,6 +2432,12 @@ static int feed_post_mortem_late() post_mortem.process.thread_info[i].stack_top = ha_thread_info[i].stack_top; } + /* also set runtime process settings. At this stage we are sure, that all + * config options and limits adjustements are successfully applied. + */ + post_mortem.process.run_uid = geteuid(); + post_mortem.process.run_gid = getegid(); + return 1; }