Check-in [7b169db8a3]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Made all unused variables self-assignments
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | wip-fix-io-layer
Files: files | file ages | folders
SHA1:7b169db8a38ce936ff7f800add7a80a0ec35604a
User & Date: rkeene 2016-12-13 03:46:36
Context
2016-12-13
04:48
Updated to support retrying TLS negotiations if we get an EAGAIN error check-in: f2deea0396 user: rkeene tags: wip-fix-io-layer
03:46
Made all unused variables self-assignments check-in: 7b169db8a3 user: rkeene tags: wip-fix-io-layer
03:40
Fixed uninitialized use of variable check-in: 942e844672 user: rkeene tags: wip-fix-io-layer
Changes

Changes to configure.in.

142
143
144
145
146
147
148
149



150
151
152
153
154
155
156
	if test "$enableval" = 'yes'; then
		TCLEXT_TLS_STATIC_SSL='yes'
	fi
])

dnl Enable compiler warnings
AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
AX_CHECK_COMPILE_FLAG([-W], [CFLAGS="$CFLAGS -W"])




dnl Enable hardening
AX_CHECK_COMPILE_FLAG([-fstack-protector-all], [CFLAGS="$CFLAGS -fstack-protector-all"])
AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CFLAGS="$CFLAGS -fno-strict-overflow"])
AC_DEFINE([_FORTIFY_SOURCE], [2], [Enable fortification])

dnl XXX:TODO: Automatically determine the SSL library to use







|
>
>
>







142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
	if test "$enableval" = 'yes'; then
		TCLEXT_TLS_STATIC_SSL='yes'
	fi
])

dnl Enable compiler warnings
AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
AX_CHECK_COMPILE_FLAG([-W], [
	CFLAGS="$CFLAGS -W"
	AX_CHECK_COMPILE_FLAG([-Wno-self-assign], [CFLAGS="$CFLAGS -Wno-self-assign"])
])

dnl Enable hardening
AX_CHECK_COMPILE_FLAG([-fstack-protector-all], [CFLAGS="$CFLAGS -fstack-protector-all"])
AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CFLAGS="$CFLAGS -fno-strict-overflow"])
AC_DEFINE([_FORTIFY_SOURCE], [2], [Enable fortification])

dnl XXX:TODO: Automatically determine the SSL library to use

Changes to tls.c.

122
123
124
125
126
127
128



129
130
131
132
133
134
135
...
399
400
401
402
403
404
405



406
407
408
409
410
411
412
...
444
445
446
447
448
449
450

451
452
453
454
455
456
457
...
579
580
581
582
583
584
585

586
587
588
589
590
591
592
...
660
661
662
663
664
665
666

667
668
669
670
671
672
673
...
930
931
932
933
934
935
936

937
938
939
940
941
942
943
...
985
986
987
988
989
990
991

992
993
994
995
996
997
998
....
1328
1329
1330
1331
1332
1333
1334

1335
1336
1337
1338
1339
1340
1341
....
1358
1359
1360
1361
1362
1363
1364



1365
1366
1367
1368
1369
1370
1371
....
1522
1523
1524
1525
1526
1527
1528

1529
1530
1531
1532
1533
1534
1535

void CryptoThreadLockCallback(int mode, int n, const char *file, int line) {
	if (mode & CRYPTO_LOCK) {
		Tcl_MutexLock(&locks[n]);
	} else {
		Tcl_MutexUnlock(&locks[n]);
	}



}

unsigned long CryptoThreadIdCallback(void) {
	return (unsigned long) Tcl_GetCurrentThread();
}
#endif /* OPENSSL_THREADS */
#endif /* TCL_THREADS */
................................................................................
 * No way to handle user-data therefore no way without a global
 * variable to access the Tcl interpreter.
*/
static int
PasswordCallback(char *buf, int size, int verify)
{
    return -1;



}
#else
static int
PasswordCallback(char *buf, int size, int verify, void *udata)
{
    State *statePtr	= (State *) udata;
    Tcl_Interp *interp	= statePtr->interp;
................................................................................
    if (result == TCL_OK) {
	char *ret = (char *) Tcl_GetStringResult(interp);
	strncpy(buf, ret, (size_t) size);
	return (int)strlen(ret);
    } else {
	return -1;
    }

}
#endif
 
/*
 *-------------------------------------------------------------------
 *
 * CiphersObjCmd -- list available ciphers
................................................................................
	}
    }
    SSL_free(ssl);
    SSL_CTX_free(ctx);

    Tcl_SetObjResult( interp, objPtr);
    return TCL_OK;

}
 
/*
 *-------------------------------------------------------------------
 *
 * HandshakeObjCmd --
 *
................................................................................
            dprintf("Returning TCL_ERROR with handshake failed: %s", errStr);
	    return TCL_ERROR;
	}
    }

    Tcl_SetObjResult(interp, Tcl_NewIntObj(ret));
    return TCL_OK;

}
 
/*
 *-------------------------------------------------------------------
 *
 * ImportObjCmd --
 *
................................................................................
    /*
     * End of SSL Init
     */
    dprintf("Returning %s", Tcl_GetChannelName(statePtr->self));
    Tcl_SetResult(interp, (char *) Tcl_GetChannelName(statePtr->self),
	    TCL_VOLATILE);
    return TCL_OK;

}
 
/*
 *-------------------------------------------------------------------
 *
 * UnimportObjCmd --
 *
................................................................................
    }

    if (Tcl_UnstackChannel(interp, chan) == TCL_ERROR) {
	return TCL_ERROR;
    }

    return TCL_OK;

}
 
/*
 *-------------------------------------------------------------------
 *
 * CTX_Init -- construct a SSL_CTX instance
 *
................................................................................
	Tcl_ListObjAppendElement(interp, objPtr,
		Tcl_NewStringObj("cipher", -1));
	Tcl_ListObjAppendElement(interp, objPtr,
		Tcl_NewStringObj(SSL_get_cipher(statePtr->ssl), -1));
    }
    Tcl_SetObjResult( interp, objPtr);
    return TCL_OK;

}
 
/*
 *-------------------------------------------------------------------
 *
 * VersionObjCmd -- return version string from OpenSSL.
 *
................................................................................

    dprintf("Called");

    objPtr = Tcl_NewStringObj(OPENSSL_VERSION_TEXT, -1);

    Tcl_SetObjResult(interp, objPtr);
    return TCL_OK;



}
 
/*
 *-------------------------------------------------------------------
 *
 * MiscObjCmd -- misc commands
 *
................................................................................
	    }
	}
	break;
    default:
	break;
    }
    return TCL_OK;

}
 
/*
 *-------------------------------------------------------------------
 *
 * Tls_Free --
 *







>
>
>







 







>
>
>







 







>







 







>







 







>







 







>







 







>







 







>







 







>
>
>







 







>







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
...
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
...
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
...
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
...
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
...
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
...
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
....
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
....
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
....
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551

void CryptoThreadLockCallback(int mode, int n, const char *file, int line) {
	if (mode & CRYPTO_LOCK) {
		Tcl_MutexLock(&locks[n]);
	} else {
		Tcl_MutexUnlock(&locks[n]);
	}
	return;
	file = file;
	line = line;
}

unsigned long CryptoThreadIdCallback(void) {
	return (unsigned long) Tcl_GetCurrentThread();
}
#endif /* OPENSSL_THREADS */
#endif /* TCL_THREADS */
................................................................................
 * No way to handle user-data therefore no way without a global
 * variable to access the Tcl interpreter.
*/
static int
PasswordCallback(char *buf, int size, int verify)
{
    return -1;
    	buf = buf;
	size = size;
	verify = verify;
}
#else
static int
PasswordCallback(char *buf, int size, int verify, void *udata)
{
    State *statePtr	= (State *) udata;
    Tcl_Interp *interp	= statePtr->interp;
................................................................................
    if (result == TCL_OK) {
	char *ret = (char *) Tcl_GetStringResult(interp);
	strncpy(buf, ret, (size_t) size);
	return (int)strlen(ret);
    } else {
	return -1;
    }
    	verify = verify;
}
#endif
 
/*
 *-------------------------------------------------------------------
 *
 * CiphersObjCmd -- list available ciphers
................................................................................
	}
    }
    SSL_free(ssl);
    SSL_CTX_free(ctx);

    Tcl_SetObjResult( interp, objPtr);
    return TCL_OK;
    	clientData = clientData;
}
 
/*
 *-------------------------------------------------------------------
 *
 * HandshakeObjCmd --
 *
................................................................................
            dprintf("Returning TCL_ERROR with handshake failed: %s", errStr);
	    return TCL_ERROR;
	}
    }

    Tcl_SetObjResult(interp, Tcl_NewIntObj(ret));
    return TCL_OK;
    	clientData = clientData;
}
 
/*
 *-------------------------------------------------------------------
 *
 * ImportObjCmd --
 *
................................................................................
    /*
     * End of SSL Init
     */
    dprintf("Returning %s", Tcl_GetChannelName(statePtr->self));
    Tcl_SetResult(interp, (char *) Tcl_GetChannelName(statePtr->self),
	    TCL_VOLATILE);
    return TCL_OK;
    	clientData = clientData;
}
 
/*
 *-------------------------------------------------------------------
 *
 * UnimportObjCmd --
 *
................................................................................
    }

    if (Tcl_UnstackChannel(interp, chan) == TCL_ERROR) {
	return TCL_ERROR;
    }

    return TCL_OK;
    	clientData = clientData;
}
 
/*
 *-------------------------------------------------------------------
 *
 * CTX_Init -- construct a SSL_CTX instance
 *
................................................................................
	Tcl_ListObjAppendElement(interp, objPtr,
		Tcl_NewStringObj("cipher", -1));
	Tcl_ListObjAppendElement(interp, objPtr,
		Tcl_NewStringObj(SSL_get_cipher(statePtr->ssl), -1));
    }
    Tcl_SetObjResult( interp, objPtr);
    return TCL_OK;
    	clientData = clientData;
}
 
/*
 *-------------------------------------------------------------------
 *
 * VersionObjCmd -- return version string from OpenSSL.
 *
................................................................................

    dprintf("Called");

    objPtr = Tcl_NewStringObj(OPENSSL_VERSION_TEXT, -1);

    Tcl_SetObjResult(interp, objPtr);
    return TCL_OK;
    	clientData = clientData;
    	objc = objc;
    	objv = objv;
}
 
/*
 *-------------------------------------------------------------------
 *
 * MiscObjCmd -- misc commands
 *
................................................................................
	    }
	}
	break;
    default:
	break;
    }
    return TCL_OK;
    	clientData = clientData;
}
 
/*
 *-------------------------------------------------------------------
 *
 * Tls_Free --
 *