File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -24,7 +24,7 @@ description: MySQL - fast and reliable SQL database
2424# repository is commercial it can be an internal email address or "none"
2525# to disable logging.
2626#
27- logging: logging@openlogging.org
27+ logging: none
2828#
2929# If this field is set, all checkins will appear to be made by this user,
3030# in effect making this a single user package. Single user packages are
Original file line number Diff line number Diff line change 1+ select des_encrypt('hello');
2+ des_encrypt('hello')
3+ ��2nV��}
Original file line number Diff line number Diff line change 1+ -- source include/have_openssl.inc
2+
3+ # This test can't be in func_encrypt.test, because it requires
4+ # --des-key-file to not be set.
5+
6+ #
7+ # Bug #11643: des_encrypt() causes server to die
8+ #
9+ select des_encrypt('hello');
Original file line number Diff line number Diff line change 2222struct st_des_keyschedule des_keyschedule[10 ];
2323uint des_default_key;
2424pthread_mutex_t LOCK_des_key_file;
25- static int initialized;
25+ static int initialized= 0 ;
26+
27+ void
28+ init_des_key_file ()
29+ {
30+ if (!initialized)
31+ {
32+ initialized=1 ;
33+ pthread_mutex_init (&LOCK_des_key_file,MY_MUTEX_INIT_FAST );
34+ }
35+ }
2636
2737/*
2838 Function which loads DES keys from plaintext file into memory on MySQL
@@ -45,11 +55,7 @@ load_des_key_file(const char *file_name)
4555 DBUG_ENTER (" load_des_key_file" );
4656 DBUG_PRINT (" enter" ,(" name: %s" ,file_name));
4757
48- if (!initialized)
49- {
50- initialized=1 ;
51- pthread_mutex_init (&LOCK_des_key_file,MY_MUTEX_INIT_FAST );
52- }
58+ init_des_key_file ();
5359
5460 VOID (pthread_mutex_lock (&LOCK_des_key_file));
5561 if ((file=my_open (file_name,O_RDONLY | O_BINARY ,MYF (MY_WME ))) < 0 ||
Original file line number Diff line number Diff line change @@ -388,6 +388,9 @@ String *Item_func_des_encrypt::val_str(String *str)
388388
389389 if (arg_count == 1 )
390390 {
391+ /* Make sure LOCK_des_key_file was initialized. */
392+ init_des_key_file ();
393+
391394 /* Protect against someone doing FLUSH DES_KEY_FILE */
392395 VOID (pthread_mutex_lock (&LOCK_des_key_file));
393396 keyschedule= des_keyschedule[key_number=des_default_key];
@@ -398,6 +401,10 @@ String *Item_func_des_encrypt::val_str(String *str)
398401 key_number= (uint) args[1 ]->val_int ();
399402 if (key_number > 9 )
400403 goto error;
404+
405+ /* Make sure LOCK_des_key_file was initialized. */
406+ init_des_key_file ();
407+
401408 VOID (pthread_mutex_lock (&LOCK_des_key_file));
402409 keyschedule= des_keyschedule[key_number];
403410 VOID (pthread_mutex_unlock (&LOCK_des_key_file));
@@ -485,6 +492,10 @@ String *Item_func_des_decrypt::val_str(String *str)
485492 // Check if automatic key and that we have privilege to uncompress using it
486493 if (!(current_thd->master_access & SUPER_ACL ) || key_number > 9 )
487494 goto error;
495+
496+ /* Make sure LOCK_des_key_file was initialized. */
497+ init_des_key_file ();
498+
488499 VOID (pthread_mutex_lock (&LOCK_des_key_file));
489500 keyschedule= des_keyschedule[key_number];
490501 VOID (pthread_mutex_unlock (&LOCK_des_key_file));
Original file line number Diff line number Diff line change @@ -624,6 +624,7 @@ extern char *des_key_file;
624624extern struct st_des_keyschedule des_keyschedule[10 ];
625625extern uint des_default_key;
626626extern pthread_mutex_t LOCK_des_key_file;
627+ void init_des_key_file ();
627628bool load_des_key_file (const char *file_name);
628629void free_des_key_file ();
629630#endif /* HAVE_OPENSSL */
You can’t perform that action at this time.
0 commit comments