1diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c 2index 0775abe35d..f53b3580b3 100644 3--- a/src/backend/tcop/postgres.c 4+++ b/src/backend/tcop/postgres.c 5@@ -105,6 +105,11 @@ int PostAuthDelay = 0; 6 /* Time between checks that the client is still connected. */ 7 int client_connection_check_interval = 0; 8 9+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION 10+bool fuzzer_first_run = true; 11+#endif 12+ 13+ 14 /* ---------------- 15 * private typedefs etc 16 * ---------------- 17@@ -471,11 +476,14 @@ static int 18 ReadCommand(StringInfo inBuf) 19 { 20 int result; 21- 22+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION 23+ result = SocketBackend(inBuf); 24+#else 25 if (whereToSendOutput == DestRemote) 26 result = SocketBackend(inBuf); 27 else 28 result = InteractiveBackend(inBuf); 29+#endif 30 return result; 31 } 32 33@@ -4021,6 +4029,11 @@ PostgresMain(const char *dbname, const char *username) 34 bool idle_in_transaction_timeout_enabled = false; 35 bool idle_session_timeout_enabled = false; 36 37+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION 38+ if(fuzzer_first_run) 39+ { 40+#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ 41+ 42 AssertArg(dbname != NULL); 43 AssertArg(username != NULL); 44 45@@ -4312,6 +4325,11 @@ PostgresMain(const char *dbname, const char *username) 46 if (!ignore_till_sync) 47 send_ready_for_query = true; /* initially, or after error */ 48 49+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION 50+ fuzzer_first_run=false; 51+ } 52+#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ 53+ 54 /* 55 * Non-error queries loop here. 56 */ 57diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c 58index 2af87ee3bd..825bb70532 100644 59--- a/src/backend/utils/error/elog.c 60+++ b/src/backend/utils/error/elog.c 61@@ -594,7 +594,9 @@ errfinish(const char *filename, int lineno, const char *funcname) 62 } 63 64 /* Emit the message to the right places */ 65+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION 66 EmitErrorReport(); 67+#endif 68 69 /* Now free up subsidiary data attached to stack entry, and release it */ 70 if (edata->message) 71