Fredrik Lindgren <[email protected]> writes:
> 2012-04-04 10:03 skrev Simon Josefsson:
>> Fredrik Lindgren <[email protected]> writes:
>>
>>> [pam_oath.c:pam_sm_authenticate(301)] authenticate rc 4711 (UNKNOWN:
>>> Liboath unknown error) last otp Mon Apr 2 10:23:06 2012
>>
>> Thank you. So the culprit is this code:
>>
>> r = fputs (origline, outfh);
>> if (r <= 0)
>> return OATH_PRINTF_ERROR;
>>
>> The POSIX standard says fputs should return a "non-negative number",
>> or
>> EOF. Admittedly, 0 can be considered a non-negative number, and if
>> it
>> returns 0 on success the code above would fail with OATH_PRINTF_ERROR
>> anyway. So the code may be buggy. Can you make the code look like
>> this:
>>
>> r = fputs (origline, outfh);
>> printf ("fputs rc %d\n", r);
>> if (r <= 0)
>> return OATH_PRINTF_ERROR;
>>
>> and try again and show me what it prints?
>
> Looks like you're on the right track:
>
> fputs rc 0
Great. Please try to revert all your changes and try with a fresh
1.12.1 and change this line:
r = fputs (origline, outfh);
into
r = fprintf (outfh, "%s\n", origline);
Does it then pass self-checks, and more importantly, does it work for
you? If so I'll have a new release out ASAP.
/Simon