Re: Bug in tds_set_server when coming through ct_connect
Frediano Ziglio <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
Applied freddy77 2010/11/29 Peter C. Norton <[email protected]>: > I have this bug report from a user: > > ct_connect is defined (in ctlib/ct.c) as: > CS_RETCODE > ct_connect(CS_CONNECTION * con, CS_CHAR * servername, CS_INT snamelen) > { > ... > } else if (snamelen == 0 || snamelen == CS_UNUSED) { > server = NULL; > ... > tds_set_server(con->tds_login, server); > ... > > Note that 'snamelen' is explicitly and intentionally allowed to be 0, > in which case the 'servername' is ignored and we pass in server=NULL > to tds_set_server. > > In > http://freetds.cvs.sourceforge.net/viewvc/freetds/freetds/src/tds/login.c?r1=1.178&r2=1.179&, > the code to default the server name based on the $TDSQUERY or $DSQUERY > environment variables is #if'ed out and replaced by > assert(server); > > The comment says > // Doing this in tds_alloc_login instead > which, while true (in tds/mem.c), does not prevent the assert from failing. > > > So, can you please change it to something along the lines of > > - assert(server); > - tds_dstr_copy(&tds_login->server_name, server); > + if (server != NULL) { > + tds_dstr_copy(&tds_login->server_name, server); > + } > > > > Thanks, > > -Peter _______________________________________________ FreeTDS mailing list [email protected] http://lists.ibiblio.org/mailman/listinfo/freetds