From 659e318aedf3de9c7be5ce2bf40c8aa850194792 Mon Sep 17 00:00:00 2001
From: Bryson Steck <me@brysonsteck.xyz>
Date: Thu, 20 Mar 2025 21:19:55 -0600
Subject: [PATCH 1/3] implement valid in certificate_check_cb

---
 src/remote_callbacks.rs | 41 +++++++++++++++++++++++------------------
 1 file changed, 23 insertions(+), 18 deletions(-)

diff --git a/src/remote_callbacks.rs b/src/remote_callbacks.rs
index 2df2e7b015..a6c6efad77 100644
--- a/src/remote_callbacks.rs
+++ b/src/remote_callbacks.rs
@@ -412,27 +412,32 @@ extern "C" fn update_tips_cb(
 
 extern "C" fn certificate_check_cb(
     cert: *mut raw::git_cert,
-    _valid: c_int,
+    valid: c_int,
     hostname: *const c_char,
     data: *mut c_void,
 ) -> c_int {
-    let ok = panic::wrap(|| unsafe {
-        let payload = &mut *(data as *mut RemoteCallbacks<'_>);
-        let callback = match payload.certificate_check {
-            Some(ref mut c) => c,
-            None => return Ok(CertificateCheckStatus::CertificatePassthrough),
-        };
-        let cert = Binding::from_raw(cert);
-        let hostname = str::from_utf8(CStr::from_ptr(hostname).to_bytes()).unwrap();
-        callback(&cert, hostname)
-    });
-    match ok {
-        Some(Ok(CertificateCheckStatus::CertificateOk)) => 0,
-        Some(Ok(CertificateCheckStatus::CertificatePassthrough)) => raw::GIT_PASSTHROUGH as c_int,
-        Some(Err(e)) => unsafe { e.raw_set_git_error() },
-        None => {
-            // Panic. The *should* get resumed by some future call to check().
-            -1
+    match valid {
+        -1 => valid,
+        _ => {
+            let ok = panic::wrap(|| unsafe {
+                let payload = &mut *(data as *mut RemoteCallbacks<'_>);
+                let callback = match payload.certificate_check {
+                    Some(ref mut c) => c,
+                    None => return Ok(CertificateCheckStatus::CertificatePassthrough),
+                };
+                let cert = Binding::from_raw(cert);
+                let hostname = str::from_utf8(CStr::from_ptr(hostname).to_bytes()).unwrap();
+                callback(&cert, hostname)
+            });
+            match ok {
+                Some(Ok(CertificateCheckStatus::CertificateOk)) => 0,
+                Some(Ok(CertificateCheckStatus::CertificatePassthrough)) => raw::GIT_PASSTHROUGH as c_int,
+                Some(Err(e)) => unsafe { e.raw_set_git_error() },
+                None => {
+                    // Panic. The *should* get resumed by some future call to check().
+                    -1
+                }
+            }
         }
     }
 }

From d72e13b493bf58593e19e6d20e694805cfa187c9 Mon Sep 17 00:00:00 2001
From: Bryson Steck <me@brysonsteck.xyz>
Date: Thu, 20 Mar 2025 21:31:08 -0600
Subject: [PATCH 2/3] whoops, actually a positive 1

---
 src/remote_callbacks.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/remote_callbacks.rs b/src/remote_callbacks.rs
index a6c6efad77..48579c141d 100644
--- a/src/remote_callbacks.rs
+++ b/src/remote_callbacks.rs
@@ -417,7 +417,7 @@ extern "C" fn certificate_check_cb(
     data: *mut c_void,
 ) -> c_int {
     match valid {
-        -1 => valid,
+        1 => valid,
         _ => {
             let ok = panic::wrap(|| unsafe {
                 let payload = &mut *(data as *mut RemoteCallbacks<'_>);

From 1ca81270e632ac30c6e1367d3032ca3043068b2f Mon Sep 17 00:00:00 2001
From: Bryson Steck <me@brysonsteck.xyz>
Date: Thu, 20 Mar 2025 21:57:12 -0600
Subject: [PATCH 3/3] satisfy formatting

---
 src/remote_callbacks.rs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/remote_callbacks.rs b/src/remote_callbacks.rs
index 48579c141d..ad271352f6 100644
--- a/src/remote_callbacks.rs
+++ b/src/remote_callbacks.rs
@@ -431,7 +431,9 @@ extern "C" fn certificate_check_cb(
             });
             match ok {
                 Some(Ok(CertificateCheckStatus::CertificateOk)) => 0,
-                Some(Ok(CertificateCheckStatus::CertificatePassthrough)) => raw::GIT_PASSTHROUGH as c_int,
+                Some(Ok(CertificateCheckStatus::CertificatePassthrough)) => {
+                    raw::GIT_PASSTHROUGH as c_int
+                }
                 Some(Err(e)) => unsafe { e.raw_set_git_error() },
                 None => {
                     // Panic. The *should* get resumed by some future call to check().