diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml index 8735a267c..09fbbef61 100644 --- a/.github/workflows/freebsd.yml +++ b/.github/workflows/freebsd.yml @@ -10,7 +10,7 @@ on: jobs: build: - runs-on: macos-12 + runs-on: ubuntu-22.04 timeout-minutes: 20 env: @@ -21,7 +21,7 @@ jobs: - name: Test in FreeBSD id: test - uses: vmactions/freebsd-vm@v0 + uses: vmactions/freebsd-vm@v1 with: usesh: true prepare: | diff --git a/src/httpauth/digest.c b/src/httpauth/digest.c index 5bd6c3a25..2c3d04ccf 100644 --- a/src/httpauth/digest.c +++ b/src/httpauth/digest.c @@ -635,12 +635,13 @@ static int digest_response(struct httpauth_digest_enc_resp *resp, uint8_t *hash1 = NULL; uint8_t *hash2 = NULL; struct mbuf *mb = NULL; - size_t hashstringl = (resp->hash_length * 2) + 1; int err = 0, n = 0; if (!resp || !resp->hashh) return EINVAL; + size_t hashstringl = (resp->hash_length * 2) + 1; + mb = mbuf_alloc(str_len(user) + str_len(passwd) + chall->realm.l + 2); if (!mb) return ENOMEM; @@ -961,6 +962,9 @@ int httpauth_digest_response_full(struct httpauth_digest_enc_resp **presp, goto out; } + if (err) + goto out; + err = digest_response(resp, chall, method, user, passwd, entitybody); out: