stream: Make stream_report_content() tolerate negative size.
authorBen Pfaff <blp@nicira.com>
Wed, 23 Feb 2011 19:29:37 +0000 (11:29 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 23 Feb 2011 23:14:42 +0000 (15:14 -0800)
A negative size probably means that a system call failed.  The caller could
set that to 0 but we might as well just tolerate it in
stream_report_content() by making the parameter type signed.

Coverity #10718.

lib/stream.c
lib/stream.h

index 90ec521428753ab569f4b03eaf9dcf20c33fb86b..37b611000ee9a64698a54bc302d30fca4369ffa7 100644 (file)
@@ -727,7 +727,7 @@ pstream_open_with_default_ports(const char *name_,
 /* Attempts to guess the content type of a stream whose first few bytes were
  * the 'size' bytes of 'data'. */
 static enum stream_content_type
-stream_guess_content(const uint8_t *data, size_t size)
+stream_guess_content(const uint8_t *data, ssize_t size)
 {
     if (size >= 2) {
 #define PAIR(A, B) (((A) << 8) | (B))
@@ -770,7 +770,7 @@ stream_content_type_to_string(enum stream_content_type type)
  * module 'module', naming 'stream_name' as the source, explaining what
  * content was expected and what was actually received. */
 void
-stream_report_content(const void *data, size_t size,
+stream_report_content(const void *data, ssize_t size,
                       enum stream_content_type expected_type,
                       struct vlog_module *module, const char *stream_name)
 {
index 2482bf20ceb5267e313b3ae6920aa7986cf488fa..51a765665af0377d94805f956355d3690b3f6a56 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010 Nicira Networks.
+ * Copyright (c) 2009, 2010, 2011 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
+#include <sys/types.h>
 #include "openvswitch/types.h"
 #include "vlog.h"
 
@@ -84,7 +85,7 @@ enum stream_content_type {
     STREAM_JSONRPC
 };
 
-void stream_report_content(const void *, size_t, enum stream_content_type,
+void stream_report_content(const void *, ssize_t, enum stream_content_type,
                            struct vlog_module *, const char *stream_name);
 
 #endif /* stream.h */