freebsd-ports/archivers/libcabinet/files/patch-cfheader.cpp
Edwin Groothuis 8a8b31d05c [patch] Unbreak port: archivers/libcabinet
This port did not build with gcc 3.3.1. I also fixed a
	possible buffer overflow (they used gets() to read from
	stdin).

	Please review the patch file ``patch-cftypes.cpp'' with
	extra care, since I am not sure whether this makes sense
	(2 positions in the file, marked with ``TODO'' - thanks.

Also added some lines in cftypes.cpp to overcome the absence of
values.h on -current.

PR:		ports/55767
Submitted by:	Simon Barner <barner@in.tum.de>
2003-08-31 13:09:31 +00:00

43 lines
1 KiB
C++

--- cfheader.cpp.orig Tue Aug 19 18:24:35 2003
+++ cfheader.cpp Tue Aug 19 18:28:27 2003
@@ -24,11 +24,14 @@
#include "cfheader.h"
#ifdef unix
-#include <strstream.h>
+#include <strstream>
#else
#include <strstrea.h>
#endif
+using std::ostrstream;
+using std::ends;
+
////////////////////////////////////////****************************************
// Initializes a valid fixed cabinet header
@@ -127,7 +130,7 @@
{
reserved_area = new byte[cabinet_ra_size];
- if(in.read(reserved_area, cabinet_ra_size).bad())
+ if(in.read((char*)reserved_area, cabinet_ra_size).bad())
{
return (in.fail()) ? READ_ERROR : UNEXPECTED_EOF;
}
@@ -172,7 +175,7 @@
if(cabinet_ra_size > 0) // If has cabinet reserved area
{
- if(out.write(reserved_area, cabinet_ra_size).fail())
+ if(out.write((char*)reserved_area, cabinet_ra_size).fail())
{
return WRITE_ERROR;
}
@@ -210,4 +213,4 @@
////////////////////////////////////////****************************************
-#endif
\ No newline at end of file
+#endif