> Synopsis:     Failure to detect rewind(3) errors in certificate validation
> Category:     bin
> Description:
        In iked(8), the ca_validate_pubkey() function uses rewind(3) to retry 
reading
        a public key file in a different format after the first attempt fails. 
However,
        rewind(3) error conditions are not checked before proceeding with the 
second
        read attempt.
        
        This could lead to reading from an incorrect file position if the 
stream becomes
        unseekable, potentially affecting certificate validation results. The 
man page
        explicitly warns against using rewind(3) over fseek(3) since it hides 
errors.

> Fix:
        Replace:
                rewind(fp);

        With:
        if (fseek(fp, 0L, SEEK_SET) != 0) {
                log_warn("%s: could not reposition file %s", __func__, file);
                fclose(fp);
                goto done;  // Not sslerr since this isn't an SSL error
        }

        This change uses the recommended fseek(3) with proper error checking and
        maintains the existing error handling path through sslerr for crypto
        operation failures.

Reply via email to