diff --git a/src/bin/pg_resetwal/pg_resetwal.c b/src/bin/pg_resetwal/pg_resetwal.c
index 233441837f..fd6784622c 100644
--- a/src/bin/pg_resetwal/pg_resetwal.c
+++ b/src/bin/pg_resetwal/pg_resetwal.c
@@ -631,6 +631,7 @@ read_controlfile(void)
 		}
 
 		memcpy(&ControlFile, buffer, sizeof(ControlFile));
+		pg_free(buffer);
 
 		/* return false if WAL segment size is not valid */
 		if (!IsValidWalSegSize(ControlFile.xlog_seg_size))
@@ -644,6 +645,7 @@ read_controlfile(void)
 
 		return true;
 	}
+    pg_free(buffer);
 
 	/* Looks like it's a mess. */
 	pg_log_warning("pg_control exists but is broken or wrong version; ignoring it");