]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNetLibsshSessionAuthAddPasswordAuth: Don't access unlocked 'sess'
authorPeter Krempa <pkrempa@redhat.com>
Mon, 23 Jan 2023 15:48:19 +0000 (16:48 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 24 Jan 2023 12:10:31 +0000 (13:10 +0100)
'sess->authPath' is modified before locking the 'sess' object.
Additionally on failure of 'virAuthGetConfigFilePathURI' 'sess' would be
unlocked even when it was not yet locked.

Fixes: 6917467c2b0e8f655999f3e568708c4651811689
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/rpc/virnetlibsshsession.c

index 8de7c86a41696c0f8bd9d719a5f5b291ed90b36f..d2e9e20ff204963a253cbbbf3b2df7b946046c4a 100644 (file)
@@ -846,16 +846,17 @@ virNetLibsshSessionAuthAddPasswordAuth(virNetLibsshSession *sess,
     int ret;
     virNetLibsshAuthMethod *auth;
 
+    virObjectLock(sess);
+
     if (uri) {
         VIR_FREE(sess->authPath);
 
         if (virAuthGetConfigFilePathURI(uri, &sess->authPath) < 0) {
-            ret = -1;
-            goto cleanup;
+            virObjectUnlock(sess);
+            return -1;
         }
     }
 
-    virObjectLock(sess);
 
     if (!(auth = virNetLibsshSessionAuthMethodNew(sess))) {
         ret = -1;