summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore3
-rw-r--r--client/mysql.cc1
-rw-r--r--extra/yassl/README16
-rw-r--r--extra/yassl/include/openssl/engine.h5
-rw-r--r--extra/yassl/include/openssl/pkcs12.h5
-rw-r--r--extra/yassl/src/handshake.cpp30
-rw-r--r--include/config-win.h1
-rw-r--r--include/my_global.h1
-rw-r--r--mysql-test/r/create_not_windows.result14
-rw-r--r--mysql-test/t/create_not_windows.test20
-rw-r--r--mysys/mf_fn_ext.c6
11 files changed, 89 insertions, 13 deletions
diff --git a/.bzrignore b/.bzrignore
index 835e4b2c357..25056b86642 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -278,6 +278,7 @@ bkpush.log
bkpush.log*
build.log
build_tags.sh
+client/#mysql.cc#
client/*.ds?
client/*.vcproj
client/completion_hash.cpp
@@ -1181,7 +1182,9 @@ sql/pack.c
sql/safe_to_cache_query.txt
sql/share/*.sys
sql/share/charsets/gmon.out
+sql/share/fixerrmsg.pl
sql/share/gmon.out
+sql/share/iso639-2.txt
sql/share/mysql
sql/share/norwegian-ny/errmsg.sys
sql/share/norwegian/errmsg.sys
diff --git a/client/mysql.cc b/client/mysql.cc
index 96df1fafc3b..ab1f4bdc8c5 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -852,6 +852,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case OPT_NOPAGER:
printf("WARNING: option deprecated; use --disable-pager instead.\n");
opt_nopager= 1;
+ break;
case OPT_MYSQL_PROTOCOL:
{
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
diff --git a/extra/yassl/README b/extra/yassl/README
index 62209723f66..a5ff70aa6f6 100644
--- a/extra/yassl/README
+++ b/extra/yassl/README
@@ -1,4 +1,14 @@
-yaSSL Release notes, version 1.3.0 (04/26/06)
+yaSSL Release notes, version 1.3.5 (06/01/06)
+
+
+ This release of yaSSL contains bug fixes, portability enhancements,
+ better libcurl support, and improved non-blocking I/O.
+
+See normal build instructions below under 1.0.6.
+See libcurl build instructions below under 1.3.0.
+
+
+********************yaSSL Release notes, version 1.3.0 (04/26/06)
This release of yaSSL contains minor bug fixes, portability enhancements,
@@ -17,8 +27,8 @@ See normal build instructions below under 1.0.6.
make
make openssl-links
- (then go to your libcurl home and tell libcurl about yaSSL)
- ./configure --with-ssl=/yaSSL-HomeDir
+ (then go to your libcurl home and tell libcurl about yaSSL build dir)
+ ./configure --with-ssl=/yaSSL-BuildDir LDFLAGS=-lm
make
diff --git a/extra/yassl/include/openssl/engine.h b/extra/yassl/include/openssl/engine.h
new file mode 100644
index 00000000000..39952fcae84
--- /dev/null
+++ b/extra/yassl/include/openssl/engine.h
@@ -0,0 +1,5 @@
+/* engine.h for libcurl */
+
+#undef HAVE_OPENSSL_ENGINE_H
+
+
diff --git a/extra/yassl/include/openssl/pkcs12.h b/extra/yassl/include/openssl/pkcs12.h
new file mode 100644
index 00000000000..e452fc879c4
--- /dev/null
+++ b/extra/yassl/include/openssl/pkcs12.h
@@ -0,0 +1,5 @@
+/* pkcs12.h for libcurl */
+
+
+#undef HAVE_OPENSSL_PKCS12_H
+
diff --git a/extra/yassl/src/handshake.cpp b/extra/yassl/src/handshake.cpp
index 2b099af930c..12b62f26e14 100644
--- a/extra/yassl/src/handshake.cpp
+++ b/extra/yassl/src/handshake.cpp
@@ -458,6 +458,11 @@ void ProcessOldClientHello(input_buffer& input, SSL& ssl)
uint16 sz = ((b0 & 0x7f) << 8) | b1;
+ if (sz > input.get_remaining()) {
+ ssl.SetError(bad_input);
+ return;
+ }
+
// hashHandShake manually
const opaque* buffer = input.get_buffer() + input.get_current();
ssl.useHashes().use_MD5().update(buffer, sz);
@@ -681,25 +686,38 @@ DoProcessReply(SSL& ssl, mySTL::auto_ptr<input_buffer> buffered)
// old style sslv2 client hello?
if (ssl.getSecurity().get_parms().entity_ == server_end &&
ssl.getStates().getServer() == clientNull)
- if (buffer.peek() != handshake)
+ if (buffer.peek() != handshake) {
ProcessOldClientHello(buffer, ssl);
+ if (ssl.GetError()) {
+ buffered.reset(0);
+ return buffered;
+ }
+ }
while(!buffer.eof()) {
// each record
RecordLayerHeader hdr;
+ bool needHdr = false;
+
+ if (static_cast<uint>(RECORD_HEADER) > buffer.get_remaining())
+ needHdr = true;
+ else {
buffer >> hdr;
ssl.verifyState(hdr);
+ }
// make sure we have enough input in buffer to process this record
- if (hdr.length_ > buffer.get_remaining()) {
- uint sz = buffer.get_remaining() + RECORD_HEADER;
+ if (needHdr || hdr.length_ > buffer.get_remaining()) {
+ // put header in front for next time processing
+ uint extra = needHdr ? 0 : RECORD_HEADER;
+ uint sz = buffer.get_remaining() + extra;
buffered.reset(NEW_YS input_buffer(sz, buffer.get_buffer() +
- buffer.get_current() - RECORD_HEADER, sz));
+ buffer.get_current() - extra, sz));
break;
}
while (buffer.get_current() < hdr.length_ + RECORD_HEADER + offset) {
- // each message in record
+ // each message in record, can be more than 1 if not encrypted
if (ssl.getSecurity().get_parms().pending_ == false) // cipher on
decrypt_message(ssl, buffer, hdr.length_);
mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_), ysDelete);
@@ -717,7 +735,7 @@ DoProcessReply(SSL& ssl, mySTL::auto_ptr<input_buffer> buffered)
}
offset += hdr.length_ + RECORD_HEADER;
}
- return buffered; // done, don't call again
+ return buffered;
}
diff --git a/include/config-win.h b/include/config-win.h
index aa372762191..00d2fa0dea6 100644
--- a/include/config-win.h
+++ b/include/config-win.h
@@ -400,6 +400,7 @@ inline double ulonglong2double(ulonglong value)
#define FN_LIBCHAR '\\'
#define FN_ROOTDIR "\\"
+#define FN_DEVCHAR ':'
#define FN_NETWORK_DRIVES /* Uses \\ to indicate network drives */
#define FN_NO_CASE_SENCE /* Files are not case-sensitive */
#define OS_FILE_LIMIT 2048
diff --git a/include/my_global.h b/include/my_global.h
index f2ad3af0b6f..f3f3825957f 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -681,7 +681,6 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define FN_HOMELIB '~' /* ~/ is used as abbrev for home dir */
#define FN_CURLIB '.' /* ./ is used as abbrev for current dir */
#define FN_PARENTDIR ".." /* Parent directory; Must be a string */
-#define FN_DEVCHAR ':'
#ifndef FN_LIBCHAR
#define FN_LIBCHAR '/'
diff --git a/mysql-test/r/create_not_windows.result b/mysql-test/r/create_not_windows.result
new file mode 100644
index 00000000000..b975c98c2b1
--- /dev/null
+++ b/mysql-test/r/create_not_windows.result
@@ -0,0 +1,14 @@
+drop table if exists `about:text`;
+create table `about:text` (
+_id int not null auto_increment,
+`about:text` varchar(255) not null default '',
+primary key (_id)
+);
+show create table `about:text`;
+Table Create Table
+about:text CREATE TABLE `about:text` (
+ `_id` int(11) NOT NULL auto_increment,
+ `about:text` varchar(255) NOT NULL default '',
+ PRIMARY KEY (`_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop table `about:text`;
diff --git a/mysql-test/t/create_not_windows.test b/mysql-test/t/create_not_windows.test
new file mode 100644
index 00000000000..71ad9ccd7fe
--- /dev/null
+++ b/mysql-test/t/create_not_windows.test
@@ -0,0 +1,20 @@
+# Non-windows specific create tests.
+
+--source include/not_windows.inc
+
+#
+# Bug#19479:mysqldump creates invalid dump
+#
+--disable_warnings
+drop table if exists `about:text`;
+--enable_warnings
+create table `about:text` (
+_id int not null auto_increment,
+`about:text` varchar(255) not null default '',
+primary key (_id)
+);
+
+show create table `about:text`;
+drop table `about:text`;
+
+# End of 5.0 tests
diff --git a/mysys/mf_fn_ext.c b/mysys/mf_fn_ext.c
index 9c86a8072ef..d7b1f8c1d61 100644
--- a/mysys/mf_fn_ext.c
+++ b/mysys/mf_fn_ext.c
@@ -40,14 +40,14 @@ my_string fn_ext(const char *name)
DBUG_ENTER("fn_ext");
DBUG_PRINT("mfunkt",("name: '%s'",name));
-#if defined(FN_DEVCHAR) || defined(FN_C_AFTER_DIR)
+#if defined(FN_DEVCHAR) || defined(FN_C_AFTER_DIR) || defined(BASKSLASH_MBTAIL)
{
char buff[FN_REFLEN];
gpos=(my_string) name+dirname_part(buff,(char*) name);
}
#else
- if (!(gpos=strrchr(name,FNLIBCHAR)))
- gpos=name;
+ if (!(gpos= strrchr(name, FN_LIBCHAR)))
+ gpos= (my_string) name;
#endif
pos=strchr(gpos,FN_EXTCHAR);
DBUG_RETURN (pos ? pos : strend(gpos));