]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
tls: Add a mutex lock on 'tlsCtxt'
authorZhang Bo <oscar.zhangbo@huawei.com>
Sat, 7 Mar 2020 11:31:01 +0000 (19:31 +0800)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 13 Mar 2020 17:07:32 +0000 (17:07 +0000)
Prevent the handshake function from reading 'tlsCtxt' while
updating 'tlsCtxt'.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhang Bo <oscar.zhangbo@huawei.com>
Signed-off-by: Wu Qingliang <wuqingliang4@huawei.com>
src/rpc/virnetserverclient.c

index 4d85ee25d783de169aec2c51078b76895d1a8079..657108239fdc23873a571662718a8870cfefe919 100644 (file)
@@ -1114,7 +1114,9 @@ int virNetServerClientInit(virNetServerClientPtr client)
                                   client->tls);
 
         /* Begin the TLS handshake. */
+        virObjectLock(client->tlsCtxt);
         ret = virNetTLSSessionHandshake(client->tls);
+        virObjectUnlock(client->tlsCtxt);
         if (ret == 0) {
             /* Unlikely, but ...  Next step is to check the certificate. */
             if (virNetServerClientCheckAccess(client) < 0)
@@ -1435,7 +1437,9 @@ virNetServerClientDispatchHandshake(virNetServerClientPtr client)
 {
     int ret;
     /* Continue the handshake. */
+    virObjectLock(client->tlsCtxt);
     ret = virNetTLSSessionHandshake(client->tls);
+    virObjectUnlock(client->tlsCtxt);
     if (ret == 0) {
         /* Finished.  Next step is to check the certificate. */
         if (virNetServerClientCheckAccess(client) < 0)