diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index ff84498a005e828ed51fc2c1d8fedf02cfc3026b..0dbaa6e27fe5009d7f0e95710309bc7056779c61 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -730,10 +730,10 @@ read_post_opts(void)
 				{
 					*arg1 = '\0';		/* terminate so we get only program
 										 * name */
-					post_opts = arg1 + 1;		/* point past whitespace */
+					post_opts = pg_strdup(arg1 + 1); /* point past whitespace */
 				}
 				if (exec_path == NULL)
-					exec_path = optline;
+					exec_path = pg_strdup(optline);
 			}
 
 			/* Free the results of readfile. */