Skip to Content.
Sympa Menu

freetds - Re: [freetds] Sybase Connection - trouble without protocol fallback

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Frediano Ziglio <freddy77 AT gmail.com>
  • To: Fredy Paquet <fredy AT opag.ch>
  • Cc: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Sybase Connection - trouble without protocol fallback
  • Date: Wed, 5 Jul 2017 10:21:26 +0100

2017-07-04 14:15 GMT+01:00 Fredy Paquet <fredy AT opag.ch>:
> Hello Frediano
>
> Thank you for the fix of the encryption flag in the login packet.
> (I will verify correct operation next saturday)
>
> What can we do about the fallback problem (see below) ?
>
> --- Proposal 1
>
> Change the statment to use TDS_ENCRYPTION_OFF:
>
> if (login->encryption_level == TDS_ENCRYPTION_DEFAULT)
> login->encryption_level = TDS_ENCRYPTION_OFF;
>
> Because default encryption level is defined as OFF.
>

In master is changed to request for MSSQL as MSSQL support encrypted login
by default since 2005 and recent version started forbidding not
encrypted logins.

> --- Proposal 2
>
> I propose using a temporary local variable for the tds71-try,
> instead of modifying an entry in the login record, which is being
> used later for other protocol tries.
>
> in function tds71_do_login():
>
> TDS_TINYINT my_encryption_level
> = (login->encryption_level == TDS_ENCRYPTION_DEFAULT)
> ? TDS_ENCRYPTION_REQUEST : login->encryption_level;
>
> then try with locally with my_encryption_level
>
> (this may be combined with Proposal 1)

Already done this change in master, login structure is not changed now.

>
> --- Proposal 3
>
> Drop the whole statement, because encryption_level should be controlled
> by a freetds.conf setting. But on the other side, this might kill
> working freetds.conf configurations.
>

Does not sound that great.

> What do you think about it ?
>
> fp
>
> On Wed, 2017-06-28 at 09:12 +0200, Fredy Paquet wrote:
>>
>> This is due to the fact that in login.c(Line 1128) in function
>> tds71_do_login() the encryption level is set to REQUEST, but never
>> reset
>> again:
>>
>> if (login->encryption_level == TDS_ENCRYPTION_DEFAULT)
>> login->encryption_level = TDS_ENCRYPTION_REQUEST;
>>
>> This could easily fixed by saving/restoring the encryption level, but
>> i'm asking me whether if there are other modified fields not being
>> restored properly. The protocol fallback loop is in login.c Line 404.
>
> --
> Fredy Paquet
> Mitglied der Geschäftsleitung
> OPAG Informatik AG
> Fabrikmattenweg 11
> CH-4144 Arlesheim
> http://www.opag.ch
> Tel. ++41 61 716 92 22
> Fax. ++41 61 716 92 29
>




Archive powered by MHonArc 2.6.24.

Top of Page