mirror of
https://github.com/github/codeql.git
synced 2026-05-02 20:25:13 +02:00
create new branchihsinme-patch-88 in fork
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
| test.cpp:45:20:45:31 | call to SSL_shutdown | You need to handle the return value SSL_shutdown |
|
||||
| test.cpp:61:11:61:22 | call to SSL_shutdown | You need to handle the return value SSL_shutdown |
|
||||
@@ -0,0 +1 @@
|
||||
experimental/Security/CWE/CWE-670/DangerousUseSSL_shutdown.ql
|
||||
@@ -0,0 +1,75 @@
|
||||
// it's not exact, but it's enough for an example
|
||||
typedef int SSL;
|
||||
|
||||
|
||||
int SSL_shutdown(SSL *ssl);
|
||||
int SSL_get_error(const SSL *ssl, int ret);
|
||||
void ERR_clear_error(void);
|
||||
void print_error(char *buff,int code);
|
||||
|
||||
int gootTest1(SSL *ssl)
|
||||
{
|
||||
int ret;
|
||||
switch ((ret = SSL_shutdown(ssl))) {
|
||||
case 1:
|
||||
break;
|
||||
case 0:
|
||||
ERR_clear_error();
|
||||
if ((ret = SSL_shutdown(ssl)) == 1) break; // GOOD
|
||||
default:
|
||||
print_error("error shutdown",
|
||||
SSL_get_error(ssl, ret));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int gootTest2(SSL *ssl)
|
||||
{
|
||||
int ret;
|
||||
switch ((ret = SSL_shutdown(ssl))) {
|
||||
case 1:
|
||||
break;
|
||||
case 0:
|
||||
ERR_clear_error();
|
||||
if (-1 != (ret = SSL_shutdown(ssl))) break; // GOOD
|
||||
default:
|
||||
print_error("error shutdown",
|
||||
SSL_get_error(ssl, ret));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int badTest1(SSL *ssl)
|
||||
{
|
||||
int ret;
|
||||
switch ((ret = SSL_shutdown(ssl))) {
|
||||
case 1:
|
||||
break;
|
||||
case 0:
|
||||
SSL_shutdown(ssl); // BAD
|
||||
break;
|
||||
default:
|
||||
print_error("error shutdown",
|
||||
SSL_get_error(ssl, ret));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int badTest2(SSL *ssl)
|
||||
{
|
||||
int ret;
|
||||
ret = SSL_shutdown(ssl);
|
||||
switch (ret) {
|
||||
case 1:
|
||||
break;
|
||||
case 0:
|
||||
SSL_shutdown(ssl); // BAD
|
||||
break;
|
||||
default:
|
||||
print_error("error shutdown",
|
||||
SSL_get_error(ssl, ret));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user