• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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