]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
logging: validate flags passed from client in virtlogd
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 4 Dec 2015 15:37:04 +0000 (15:37 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 7 Dec 2015 17:30:07 +0000 (17:30 +0000)
The virtlogd RPC messages all have a flags parameter. For
sake of future error reporting we should be verifying
these are all 0 for now.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/logging/log_daemon_dispatch.c
src/logging/log_handler.c
src/logging/log_handler.h

index da7c41463283c4e294a8a312e488924952c9dd39..a5fa7f0c760b5c5c90e534fc92ba0778fc7ad6cd 100644 (file)
@@ -56,6 +56,7 @@ virLogManagerProtocolDispatchDomainOpenLogFile(virNetServerPtr server ATTRIBUTE_
                                              (unsigned char *)args->dom.uuid,
                                              args->dom.name,
                                              args->path,
+                                             args->flags,
                                              &inode, &offset)) < 0)
         goto cleanup;
 
@@ -89,6 +90,7 @@ virLogManagerProtocolDispatchDomainGetLogFilePosition(virNetServerPtr server ATT
 
     if (virLogHandlerDomainGetLogFilePosition(virLogDaemonGetHandler(logDaemon),
                                               args->path,
+                                              args->flags,
                                               &inode, &offset) < 0)
         goto cleanup;
 
@@ -127,7 +129,8 @@ virLogManagerProtocolDispatchDomainReadLogFile(virNetServerPtr server ATTRIBUTE_
                                                args->path,
                                                args->pos.inode,
                                                args->pos.offset,
-                                               args->maxlen)) == NULL)
+                                               args->maxlen,
+                                               args->flags)) == NULL)
         goto cleanup;
 
     ret->data = data;
index 55da48ed46a8f887c7595fc339686f8987ca9ad9..92cff503c4fe25246ccae82b2c204f6d3b72a0a1 100644 (file)
@@ -357,6 +357,7 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
                                const unsigned char *domuuid,
                                const char *domname,
                                const char *path,
+                               unsigned int flags,
                                ino_t *inode,
                                off_t *offset)
 {
@@ -364,6 +365,8 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
     virLogHandlerLogFilePtr file = NULL;
     int pipefd[2] = { -1, -1 };
 
+    virCheckFlags(0, -1);
+
     virObjectLock(handler);
 
     handler->inhibitor(true, handler->opaque);
@@ -432,6 +435,7 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
 int
 virLogHandlerDomainGetLogFilePosition(virLogHandlerPtr handler,
                                       const char *path,
+                                      unsigned int flags,
                                       ino_t *inode,
                                       off_t *offset)
 {
@@ -439,6 +443,8 @@ virLogHandlerDomainGetLogFilePosition(virLogHandlerPtr handler,
     int ret = -1;
     size_t i;
 
+    virCheckFlags(0, -1);
+
     virObjectLock(handler);
 
     for (i = 0; i < handler->nfiles; i++) {
@@ -472,12 +478,15 @@ virLogHandlerDomainReadLogFile(virLogHandlerPtr handler,
                                const char *path,
                                ino_t inode,
                                off_t offset,
-                               size_t maxlen)
+                               size_t maxlen,
+                               unsigned int flags)
 {
     virRotatingFileReaderPtr file = NULL;
     char *data = NULL;
     ssize_t got;
 
+    virCheckFlags(0, NULL);
+
     virObjectLock(handler);
 
     if (!(file = virRotatingFileReaderNew(path, DEFAULT_MAX_BACKUP)))
index 6a130722129e4887c19277fdad497bd1f0c6db69..e61f32d4d4d9fc6030d8285836183c5c7fdc07fe 100644 (file)
@@ -48,11 +48,13 @@ int virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
                                    const unsigned char *domuuid,
                                    const char *domname,
                                    const char *path,
+                                   unsigned int flags,
                                    ino_t *inode,
                                    off_t *offset);
 
 int virLogHandlerDomainGetLogFilePosition(virLogHandlerPtr handler,
                                           const char *path,
+                                          unsigned int flags,
                                           ino_t *inode,
                                           off_t *offset);
 
@@ -60,7 +62,8 @@ char *virLogHandlerDomainReadLogFile(virLogHandlerPtr handler,
                                      const char *path,
                                      ino_t inode,
                                      off_t offset,
-                                     size_t maxlen);
+                                     size_t maxlen,
+                                     unsigned int flags);
 
 virJSONValuePtr virLogHandlerPreExecRestart(virLogHandlerPtr handler);