]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virStream: Forbid negative seeks
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 18 May 2017 06:27:27 +0000 (08:27 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 18 May 2017 13:05:18 +0000 (15:05 +0200)
Currently, we don't assign any meaning to that. Our current view
on virStream is that it's merely a pipe. And pipes don't support
seeking.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/internal.h
src/rpc/virnetclientstream.c
src/util/virfdstream.c

index 5a5a430a26c77a8405cdd26a5535c199ffb00f24..9e7ef553d7f065d8c144797a2aa0c5b7bf1e1f17 100644 (file)
             goto label;                             \
         }                                           \
     } while (0)
+# define virCheckPositiveArgReturn(argname, retval)     \
+    do {                                                \
+        if (argname <= 0) {                             \
+            virReportInvalidPositiveArg(argname);       \
+            return retval;                              \
+        }                                               \
+    } while (0)
 # define virCheckNonZeroArgGoto(argname, label)     \
     do {                                            \
         if (argname == 0) {                         \
index 7b28d63db0a18615012eda99ab5165a18ec4cbaa..a9bf271dc5baa3e788470fa4139d81018cce86fc 100644 (file)
@@ -367,6 +367,7 @@ virNetClientStreamSetHole(virNetClientStreamPtr st,
                           unsigned int flags)
 {
     virCheckFlags(0, -1);
+    virCheckPositiveArgReturn(length, -1);
 
     /* Shouldn't happen, But it's better to safe than sorry. */
     if (st->holeLength) {
index 6870d8846c1155d7e5713590f5a912ac0f353c4c..7ee58be136d10c9acc200f49beb17764b9f1d85a 100644 (file)
@@ -950,6 +950,7 @@ virFDStreamSendHole(virStreamPtr st,
     int ret = -1;
 
     virCheckFlags(0, -1);
+    virCheckPositiveArgReturn(length, -1);
 
     virObjectLock(fdst);
     if (fdst->length) {