mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 20:11:42 +01:00
16115af97c
Fixed problem with LIKE with latin1_de Added parsing support of UNSIGNED LONG LONG Docs/manual.texi: Changelog client/client_priv.h: Changed to use my_global.h client/completion_hash.cc: Changed to use my_global.h client/errmsg.c: Changed to use my_global.h client/get_password.c: Changed to use my_global.h client/mysqldump.c: Changed to use my_global.h client/mysqlshow.c: Changed to use my_global.h client/mysqltest.c: Changed to use my_global.h client/password.c: Changed to use my_global.h client/readline.cc: Changed to use my_global.h client/sql_string.cc: Changed to use my_global.h client/thimble.cc: Changed to use my_global.h client/thread_test.c: Changed to use my_global.h dbug/dbug.c: Changed to use my_global.h dbug/dbug_analyze.c: Changed to use my_global.h dbug/example1.c: Changed to use my_global.h dbug/example2.c: Changed to use my_global.h dbug/example3.c: Changed to use my_global.h dbug/factorial.c: Changed to use my_global.h dbug/main.c: Changed to use my_global.h dbug/sanity.c: Changed to use my_global.h extra/comp_err.c: Changed to use my_global.h extra/my_print_defaults.c: Changed to use my_global.h extra/perror.c: Changed to use my_global.h extra/replace.c: Changed to use my_global.h extra/resolve_stack_dump.c: Changed to use my_global.h extra/resolveip.c: Changed to use my_global.h fs/libmysqlfs.h: Changed to use my_global.h fs/mysqlcorbafs.h: Changed to use my_global.h heap/hp_test1.c: Changed to use my_global.h include/Makefile.am: Changed to use my_global.h include/m_ctype.h: Changed to use my_global.h include/my_base.h: Changed to use my_global.h innobase/include/univ.i: Changed to use my_global.h libmysql/dll.c: Changed to use my_global.h libmysql/errmsg.c: Changed to use my_global.h libmysql/get_password.c: Changed to use my_global.h libmysql/libmysql.c: Changed to use my_global.h libmysql/net.c: Changed to use my_global.h libmysql/password.c: Changed to use my_global.h libmysqld/lib_sql.cc: Changed to use my_global.h libmysqld/lib_vio.c: Changed to use my_global.h libmysqld/libmysqld.c: Changed to use my_global.h mysql-test/mysql-test-run.sh: Changed to use latin1 as default character set mysql-test/r/ctype_latin1_de.result: Changed to use my_global.h mysql-test/r/func_like.result: New test mysql-test/t/ctype_latin1_de.test: Added test of part keys mysql-test/t/func_like.test: New test mysys/checksum.c: Changed to use my_global.h mysys/getopt.c: Changed to use my_global.h mysys/getopt1.c: Changed to use my_global.h mysys/make-conf.c: Changed to use my_global.h mysys/my_alloc.c: Changed to use my_global.h mysys/my_clock.c: Changed to use my_global.h mysys/my_compress.c: Changed to use my_global.h mysys/mysys_priv.h: Changed to use my_global.h mysys/test_charset.c: Changed to use my_global.h mysys/testhash.c: Changed to use my_global.h mysys/thr_alarm.c: Changed to use my_global.h mysys/thr_mutex.c: Changed to use my_global.h regex/debug.c: Changed to use my_global.h regex/main.c: Changed to use my_global.h regex/regcomp.c: Changed to use my_global.h regex/regerror.c: Changed to use my_global.h regex/regexec.c: Changed to use my_global.h regex/regexp.c: Changed to use my_global.h regex/regfree.c: Changed to use my_global.h regex/reginit.c: Changed to use my_global.h sql/cache_manager.cc: Changed to use my_global.h sql/gen_lex_hash.cc: Changed to use my_global.h sql/ha_berkeley.cc: Fixed problem with UNIQUE keys that could contain NULL sql/ha_gemini.h: Changed to use my_global.h sql/handler.cc: Fixed problem after merge sql/item.cc: Added Item_unit sql/item.h: Added Item_uint sql/matherr.c: Changed to use my_global.h sql/md5.c: Changed to use my_global.h sql/mini_client.cc: Changed to use my_global.h sql/my_lock.c: Changed to use my_global.h sql/mysql_priv.h: Changed to use my_global.h sql/net_serv.cc: Changed to use my_global.h sql/password.c: Changed to use my_global.h sql/sql_lex.cc: Added parsing support of UNSIGNED LONG LONG sql/sql_show.cc: Changed to use my_global.h sql/sql_string.cc: Changed to use my_global.h sql/sql_yacc.yy: Added usage of Int_uint sql/stacktrace.c: Changed to use my_global.h sql/udf_example.cc: Changed to use my_global.h strings/atof.c: Changed to use my_global.h strings/bchange.c: Changed to use my_global.h strings/bcmp.c: Changed to use my_global.h strings/bfill.c: Changed to use my_global.h strings/bmove.c: Changed to use my_global.h strings/bmove512.c: Changed to use my_global.h strings/bmove_upp.c: Changed to use my_global.h strings/ctype-big5.c: Changed to use my_global.h strings/ctype-czech.c: Changed to use my_global.h strings/ctype-euc_kr.c: Changed to use my_global.h strings/ctype-gb2312.c: Changed to use my_global.h strings/ctype-gbk.c: Changed to use my_global.h strings/ctype-latin1_de.c: Fixed problem with LIKE strings/ctype-sjis.c: Changed to use my_global.h strings/ctype-tis620.c: Changed to use my_global.h strings/ctype-ujis.c: Changed to use my_global.h strings/ctype.c: Changed to use my_global.h strings/do_ctype.c: Changed to use my_global.h strings/int2str.c: Changed to use my_global.h strings/is_prefix.c: Changed to use my_global.h strings/llstr.c: Changed to use my_global.h strings/longlong2str.c: Changed to use my_global.h strings/r_strinstr.c: Changed to use my_global.h strings/str2int.c: Changed to use my_global.h strings/str_test.c: Changed to use my_global.h strings/strappend.c: Changed to use my_global.h strings/strcend.c: Changed to use my_global.h strings/strcont.c: Changed to use my_global.h strings/strend.c: Changed to use my_global.h strings/strfill.c: Changed to use my_global.h strings/strings-not-used.h: Changed to use my_global.h strings/strinstr.c: Changed to use my_global.h strings/strmake.c: Changed to use my_global.h strings/strmov.c: Changed to use my_global.h strings/strnlen.c: Changed to use my_global.h strings/strnmov.c: Changed to use my_global.h strings/strstr.c: Changed to use my_global.h strings/strto.c: Changed to use my_global.h strings/strtol.c: Changed to use my_global.h strings/strtoll.c: Changed to use my_global.h strings/strtoul.c: Changed to use my_global.h strings/strtoull.c: Changed to use my_global.h strings/strxmov.c: Changed to use my_global.h strings/strxnmov.c: Changed to use my_global.h strings/udiv.c: Changed to use my_global.h tools/mysqlmanager.c: Changed to use my_global.h vio/test-ssl.c: Changed to use my_global.h vio/test-sslclient.c: Changed to use my_global.h vio/test-sslserver.c: Changed to use my_global.h vio/test-ssl: Changed to use my_global.h vio/vio.c: Changed to use my_global.h vio/viosocket.c: Changed to use my_global.h vio/viossl.c: Changed to use my_global.h vio/viosslfactories.c: Changed to use my_global.h vio/viotest-ssl.c: Changed to use my_global.h
140 lines
3.3 KiB
C
140 lines
3.3 KiB
C
#include <my_global.h>
|
|
#ifdef HAVE_OPENSSL
|
|
#include <my_sys.h>
|
|
#include <m_string.h>
|
|
#include <m_ctype.h>
|
|
#include "mysql.h"
|
|
#include "errmsg.h"
|
|
#include <my_dir.h>
|
|
#ifndef __GNU_LIBRARY__
|
|
#define __GNU_LIBRARY__ // Skip warnings in getopt.h
|
|
#endif
|
|
#include <getopt.h>
|
|
//#include "my_readline.h"
|
|
#include <signal.h>
|
|
#include <violite.h>
|
|
|
|
const char *VER="0.1";
|
|
|
|
|
|
#ifndef DBUG_OFF
|
|
const char *default_dbug_option="d:t:O,/tmp/viotest-ssl.trace";
|
|
#endif
|
|
|
|
void
|
|
fatal_error( const char* r)
|
|
{
|
|
perror(r);
|
|
exit(0);
|
|
}
|
|
|
|
void
|
|
print_usage()
|
|
{
|
|
printf("viossl-test: testing SSL virtual IO. Usage:\n");
|
|
printf("viossl-test server-key server-cert client-key client-cert [CAfile] [CApath]\n");
|
|
}
|
|
|
|
int
|
|
main( int argc,
|
|
char** argv)
|
|
{
|
|
char* server_key = 0;
|
|
char* server_cert = 0;
|
|
char* client_key = 0;
|
|
char* client_cert = 0;
|
|
char* ca_file = 0;
|
|
char* ca_path = 0;
|
|
int child_pid,sv[2];
|
|
struct st_VioSSLAcceptorFd* ssl_acceptor=0;
|
|
struct st_VioSSLConnectorFd* ssl_connector=0;
|
|
Vio* client_vio=0;
|
|
Vio* server_vio=0;
|
|
MY_INIT(argv[0]);
|
|
// DBUG_ENTER("main");
|
|
DBUG_PROCESS(argv[0]);
|
|
DBUG_PUSH(default_dbug_option);
|
|
|
|
|
|
|
|
if (argc<5)
|
|
{
|
|
print_usage();
|
|
return 1;
|
|
}
|
|
|
|
server_key = argv[1];
|
|
server_cert = argv[2];
|
|
client_key = argv[3];
|
|
client_cert = argv[4];
|
|
if (argc>5)
|
|
ca_file = argv[5];
|
|
if (argc>6)
|
|
ca_path = argv[6];
|
|
printf("Server key/cert : %s/%s\n", server_key, server_cert);
|
|
printf("Client key/cert : %s/%s\n", client_key, client_cert);
|
|
if (ca_file!=0)
|
|
printf("CAfile : %s\n", ca_file);
|
|
if (ca_path!=0)
|
|
printf("CApath : %s\n", ca_path);
|
|
|
|
|
|
if (socketpair(PF_UNIX, SOCK_STREAM, IPPROTO_IP, sv)==-1)
|
|
fatal_error("socketpair");
|
|
|
|
ssl_acceptor = new_VioSSLAcceptorFd(server_key, server_cert, ca_file, ca_path);
|
|
ssl_connector = new_VioSSLConnectorFd(client_key, client_cert, ca_file, ca_path);
|
|
|
|
client_vio = (Vio*)my_malloc(sizeof(struct st_vio),MYF(0));
|
|
client_vio->sd = sv[0];
|
|
sslconnect(ssl_connector,client_vio);
|
|
server_vio = (Vio*)my_malloc(sizeof(struct st_vio),MYF(0));
|
|
server_vio->sd = sv[1];
|
|
sslaccept(ssl_acceptor,server_vio);
|
|
|
|
printf("Socketpair: %d , %d\n", client_vio->sd, server_vio->sd);
|
|
|
|
child_pid = fork();
|
|
if (child_pid==-1) {
|
|
my_free((gptr)ssl_acceptor,MYF(0));
|
|
my_free((gptr)ssl_connector,MYF(0));
|
|
fatal_error("fork");
|
|
}
|
|
if (child_pid==0) {
|
|
//child, therefore, client
|
|
char xbuf[100];
|
|
int r = vio_ssl_read(client_vio,xbuf, sizeof(xbuf));
|
|
if (r<=0) {
|
|
my_free((gptr)ssl_acceptor,MYF(0));
|
|
my_free((gptr)ssl_connector,MYF(0));
|
|
fatal_error("client:SSL_read");
|
|
}
|
|
// printf("*** client cipher %s\n",client_vio->cipher_description());
|
|
xbuf[r] = 0;
|
|
printf("client:got %s\n", xbuf);
|
|
my_free((gptr)client_vio,MYF(0));
|
|
my_free((gptr)ssl_acceptor,MYF(0));
|
|
my_free((gptr)ssl_connector,MYF(0));
|
|
sleep(1);
|
|
} else {
|
|
const char* s = "Huhuhuh";
|
|
int r = vio_ssl_write(server_vio,(gptr)s, strlen(s));
|
|
if (r<=0) {
|
|
my_free((gptr)ssl_acceptor,MYF(0));
|
|
my_free((gptr)ssl_connector,MYF(0));
|
|
fatal_error("server:SSL_write");
|
|
}
|
|
// printf("*** server cipher %s\n",server_vio->cipher_description());
|
|
my_free((gptr)server_vio,MYF(0));
|
|
my_free((gptr)ssl_acceptor,MYF(0));
|
|
my_free((gptr)ssl_connector,MYF(0));
|
|
sleep(1);
|
|
}
|
|
return 0;
|
|
}
|
|
#else /* HAVE_OPENSSL */
|
|
|
|
int main() {
|
|
return 0;
|
|
}
|
|
#endif /* HAVE_OPENSSL */
|