cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: CURLAUTH_ONLY definition and usage

From: Daniel Stenberg <daniel_at_haxx.se>
Date: Tue, 17 Apr 2012 16:20:53 +0200 (CEST)

On Tue, 17 Apr 2012, Yang Tse wrote:

> CURLAUTH_ONLY was introduced Nov 11 2010 with commit 86367422 defined as
> (1<<31) in curl.h
>
> When building curl with Sun compiler it generates following compiler
> warning...
>
> "src/tool_setopt.c", line 63: warning: integer overflow detected: op "<<"
>
> Compiler warning is relevant. Current CURLAUTH_ONLY definition is not
> a valid 32bit signed integer.

Right. It needs to be forcibly told to be unsigned to work properly...

> Additionally CURLAUTH_ONLY is not used at all in libcurl's code base. So
> unless libcurl's code is checking somewhere that an 'auth' variable is
> negative, I believe that CURLAUTH_ONLY it is not even working.

CURLAUTH_ONLY is - if I may say so - rather cleverly added in that it simply
needs to be an additional bit that is never checked. The point being that it
would be used by applications like:

   CURLAUTH_BASIC | CURLAUTH_ONLY

It would cause libcurl to try without auth and then only allow Basic to be
used. Therefore, the CURLAUTH_ONLY bit is never explicitly checked for or used
by libcurl code.

> Another fact is that libcurl 'auth' variables holding CURLAUTH_*
> bitmasks have a 'long' data type. This may alleviate the situation on
> systems on which sizeof(long) > sizeof(int) in case CURLAUTH_ONLY were
> to be used inside libcurl's code. But there are a bunch of platforms
> on which 'int' and 'long' have the same size.

I'm not sure that is in fact a problem...

> Do we get rid of CURLAUTH_ONLY, do we type cast to 'unsigned int' all
> CURLAUTH_* definitions in curl.h, do we modify CURLAUTH_ONLY definition to
> (1<<30), or we do something different?

We should probably assume that there by now is an application or two that use
it, so we should try to fix it in a way that is least likely to break existing
apps.

-- 
  / daniel.haxx.se
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html
Received on 2012-04-17