71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
 | 
						|
index 0775abe35d..f53b3580b3 100644
 | 
						|
--- a/src/backend/tcop/postgres.c
 | 
						|
+++ b/src/backend/tcop/postgres.c
 | 
						|
@@ -105,6 +105,11 @@ int			PostAuthDelay = 0;
 | 
						|
 /* Time between checks that the client is still connected. */
 | 
						|
 int			client_connection_check_interval = 0;
 | 
						|
 
 | 
						|
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 | 
						|
+bool        fuzzer_first_run = true;
 | 
						|
+#endif
 | 
						|
+
 | 
						|
+
 | 
						|
 /* ----------------
 | 
						|
  *		private typedefs etc
 | 
						|
  * ----------------
 | 
						|
@@ -471,11 +476,14 @@ static int
 | 
						|
 ReadCommand(StringInfo inBuf)
 | 
						|
 {
 | 
						|
 	int			result;
 | 
						|
-
 | 
						|
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 | 
						|
+	result = SocketBackend(inBuf);
 | 
						|
+#else
 | 
						|
 	if (whereToSendOutput == DestRemote)
 | 
						|
 		result = SocketBackend(inBuf);
 | 
						|
 	else
 | 
						|
 		result = InteractiveBackend(inBuf);
 | 
						|
+#endif
 | 
						|
 	return result;
 | 
						|
 }
 | 
						|
 
 | 
						|
@@ -4021,6 +4029,11 @@ PostgresMain(const char *dbname, const char *username)
 | 
						|
 	bool		idle_in_transaction_timeout_enabled = false;
 | 
						|
 	bool		idle_session_timeout_enabled = false;
 | 
						|
 
 | 
						|
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 | 
						|
+       if(fuzzer_first_run)
 | 
						|
+       {
 | 
						|
+#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */
 | 
						|
+
 | 
						|
 	AssertArg(dbname != NULL);
 | 
						|
 	AssertArg(username != NULL);
 | 
						|
 
 | 
						|
@@ -4312,6 +4325,11 @@ PostgresMain(const char *dbname, const char *username)
 | 
						|
 	if (!ignore_till_sync)
 | 
						|
 		send_ready_for_query = true;	/* initially, or after error */
 | 
						|
 
 | 
						|
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 | 
						|
+        fuzzer_first_run=false;
 | 
						|
+            }
 | 
						|
+#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */
 | 
						|
+
 | 
						|
 	/*
 | 
						|
 	 * Non-error queries loop here.
 | 
						|
 	 */
 | 
						|
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
 | 
						|
index 2af87ee3bd..825bb70532 100644
 | 
						|
--- a/src/backend/utils/error/elog.c
 | 
						|
+++ b/src/backend/utils/error/elog.c
 | 
						|
@@ -594,7 +594,9 @@ errfinish(const char *filename, int lineno, const char *funcname)
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	/* Emit the message to the right places */
 | 
						|
+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 | 
						|
 	EmitErrorReport();
 | 
						|
+#endif
 | 
						|
 
 | 
						|
 	/* Now free up subsidiary data attached to stack entry, and release it */
 | 
						|
 	if (edata->message)
 |