@@ -744,6 +744,12 @@ sf_write_header(pcap_t *p, FILE *fp, int linktype, int snaplen)
744744 */
745745void
746746pcap_dump (u_char * user , const struct pcap_pkthdr * h , const u_char * sp )
747+ {
748+ (void )pcap_dump1 (user , h , sp );
749+ }
750+
751+ int
752+ pcap_dump1 (u_char * user , const struct pcap_pkthdr * h , const u_char * sp )
747753{
748754 register FILE * f ;
749755 struct pcap_sf_pkthdr sf_hdr ;
@@ -766,7 +772,7 @@ pcap_dump(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
766772 * http://pubs.opengroup.org/onlinepubs/009695399/functions/fwrite.html
767773 */
768774 if (ferror (f ))
769- return ;
775+ return ( -1 ) ;
770776 /*
771777 * Better not try writing pcap files after
772778 * 2038-01-19 03:14:07 UTC; switch to pcapng.
@@ -783,9 +789,14 @@ pcap_dump(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
783789 * way to set ferror() to prevent future writes from being
784790 * attempted, but it is better than nothing.
785791 */
786- if (fwrite (& sf_hdr , sizeof (sf_hdr ), 1 , f ) == 1 ) {
787- (void )fwrite (sp , h -> caplen , 1 , f );
792+ if (fwrite (& sf_hdr , 1 , sizeof (sf_hdr ), f ) != sizeof (sf_hdr )) {
793+ return (-1 );
794+ }
795+ if (fwrite (sp , 1 , h -> caplen , f ) != h -> caplen ) {
796+ return (-1 );
788797 }
798+
799+ return (0 );
789800}
790801
791802static pcap_dumper_t *
@@ -1181,11 +1192,14 @@ pcap_dump_flush(pcap_dumper_t *p)
11811192void
11821193pcap_dump_close (pcap_dumper_t * p )
11831194{
1195+ (void )pcap_dump_close1 (p );
1196+ }
11841197
1185- #ifdef notyet
1186- if (ferror ((FILE * )p ))
1187- return - an - error ;
1188- /* XXX should check return from fclose() too */
1189- #endif
1190- (void )fclose ((FILE * )p );
1198+ int
1199+ pcap_dump_close1 (pcap_dumper_t * p )
1200+ {
1201+ if (fclose ((FILE * )p ) == EOF ) {
1202+ return (-1 );
1203+ }
1204+ return (0 );
11911205}
0 commit comments