@@ -38,7 +38,7 @@ RCSID("$Id$")
38
38
#ifdef HAVE_MYSQL_MYSQL_H
39
39
# include <mysql/errmsg.h>
40
40
DIAG_OFF (strict - prototypes ) /* Seen with homebrew mysql client 5.7.13 */
41
- # include < mysql .h >
41
+ # include < mysql / mysql .h >
42
42
DIAG_ON (strict - prototypes )
43
43
# include <mysql/mysqld_error.h>
44
44
#elif defined(HAVE_MYSQL_H )
@@ -160,8 +160,9 @@ static int _sql_socket_destructor(rlm_sql_mysql_conn_t *conn)
160
160
{
161
161
DEBUG2 ("Socket destructor called, closing socket" );
162
162
163
- if (conn -> sock ){
163
+ if (conn -> sock ) {
164
164
mysql_close (conn -> sock );
165
+ conn -> sock = NULL ;
165
166
}
166
167
167
168
return 0 ;
@@ -419,20 +420,13 @@ static sql_rcode_t sql_check_error(MYSQL *server, int client_errno)
419
420
420
421
static sql_rcode_t sql_query (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config , char const * query )
421
422
{
422
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
423
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
423
424
sql_rcode_t rcode ;
424
425
char const * info ;
425
426
426
- if (!conn -> sock ) {
427
- ERROR ("Socket not connected" );
428
- return RLM_SQL_RECONNECT ;
429
- }
430
-
431
427
mysql_query (conn -> sock , query );
432
428
rcode = sql_check_error (conn -> sock , 0 );
433
- if (rcode != RLM_SQL_OK ) {
434
- return rcode ;
435
- }
429
+ if (rcode != RLM_SQL_OK ) return rcode ;
436
430
437
431
/* Only returns non-null string for INSERTS */
438
432
info = mysql_info (conn -> sock );
@@ -443,15 +437,10 @@ static sql_rcode_t sql_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t c
443
437
444
438
static sql_rcode_t sql_store_result (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
445
439
{
446
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
440
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
447
441
sql_rcode_t rcode ;
448
442
int ret ;
449
443
450
- if (!conn -> sock ) {
451
- ERROR ("Socket not connected" );
452
- return RLM_SQL_RECONNECT ;
453
- }
454
-
455
444
retry_store_result :
456
445
conn -> result = mysql_store_result (conn -> sock );
457
446
if (!conn -> result ) {
@@ -471,8 +460,8 @@ static sql_rcode_t sql_store_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_con
471
460
472
461
static int sql_num_fields (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
473
462
{
463
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort (handle -> conn ,rlm_sql_mysql_conn_t );
474
464
int num = 0 ;
475
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
476
465
477
466
#if MYSQL_VERSION_ID >= 32224
478
467
/*
@@ -514,18 +503,16 @@ static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t c
514
503
515
504
static int sql_num_rows (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
516
505
{
517
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
506
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
518
507
519
- if (conn -> result ) {
520
- return mysql_num_rows (conn -> result );
521
- }
508
+ if (conn -> result ) return mysql_num_rows (conn -> result );
522
509
523
510
return 0 ;
524
511
}
525
512
526
513
static sql_rcode_t sql_fields (char const * * out [], rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
527
514
{
528
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
515
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
529
516
530
517
unsigned int fields , i ;
531
518
MYSQL_FIELD * field_info ;
@@ -556,7 +543,7 @@ static sql_rcode_t sql_fields(char const **out[], rlm_sql_handle_t *handle, rlm_
556
543
557
544
static sql_rcode_t sql_fetch_row (rlm_sql_row_t * out , rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
558
545
{
559
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
546
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
560
547
sql_rcode_t rcode ;
561
548
MYSQL_ROW row ;
562
549
int ret ;
@@ -608,7 +595,7 @@ static sql_rcode_t sql_fetch_row(rlm_sql_row_t *out, rlm_sql_handle_t *handle, r
608
595
609
596
static sql_rcode_t sql_free_result (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
610
597
{
611
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
598
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
612
599
613
600
if (conn -> result ) {
614
601
mysql_free_result (conn -> result );
@@ -639,7 +626,7 @@ static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_conf
639
626
static size_t sql_warnings (TALLOC_CTX * ctx , sql_log_entry_t out [], size_t outlen ,
640
627
rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
641
628
{
642
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
629
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
643
630
644
631
MYSQL_RES * result ;
645
632
MYSQL_ROW row ;
@@ -705,11 +692,10 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
705
692
rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
706
693
{
707
694
rlm_sql_mysql_t * inst = talloc_get_type_abort (handle -> inst -> driver_submodule -> dl_inst -> data , rlm_sql_mysql_t );
708
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
695
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
709
696
char const * error ;
710
697
size_t i = 0 ;
711
698
712
- fr_assert (conn && conn -> sock );
713
699
fr_assert (outlen > 0 );
714
700
715
701
error = mysql_error (conn -> sock );
@@ -719,7 +705,7 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
719
705
*/
720
706
if (error && (error [0 ] != '\0' )) {
721
707
error = talloc_typed_asprintf (ctx , "ERROR %u (%s): %s" , mysql_errno (conn -> sock ), error ,
722
- mysql_sqlstate (conn -> sock ));
708
+ mysql_sqlstate (conn -> sock ));
723
709
}
724
710
725
711
/*
@@ -774,7 +760,7 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
774
760
static sql_rcode_t sql_finish_query (rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
775
761
{
776
762
#if (MYSQL_VERSION_ID >= 40100 )
777
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
763
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
778
764
int ret ;
779
765
MYSQL_RES * result ;
780
766
@@ -819,7 +805,7 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t c
819
805
820
806
static int sql_affected_rows (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
821
807
{
822
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
808
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
823
809
824
810
return mysql_affected_rows (conn -> sock );
825
811
}
@@ -828,7 +814,7 @@ static size_t sql_escape_func(UNUSED request_t *request, char *out, size_t outle
828
814
{
829
815
size_t inlen ;
830
816
rlm_sql_handle_t * handle = talloc_get_type_abort (arg , rlm_sql_handle_t );
831
- rlm_sql_mysql_conn_t * conn = handle -> conn ;
817
+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
832
818
833
819
/* Check for potential buffer overflow */
834
820
inlen = strlen (in );
0 commit comments