Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
66b1435e
Commit
66b1435e
authored
Oct 03, 2002
by
peter@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merging...
parents
4d705988
f1155a98
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
6 deletions
+64
-6
include/mysql_com.h
include/mysql_com.h
+1
-0
sql/item_strfunc.cc
sql/item_strfunc.cc
+3
-1
sql/item_strfunc.h
sql/item_strfunc.h
+2
-2
sql/password.c
sql/password.c
+58
-3
No files found.
include/mysql_com.h
View file @
66b1435e
...
...
@@ -275,6 +275,7 @@ void randominit(struct rand_struct *,unsigned long seed1,
unsigned
long
seed2
);
double
rnd
(
struct
rand_struct
*
);
void
make_scrambled_password
(
char
*
to
,
const
char
*
password
);
uint
get_password_length
();
void
get_salt_from_password
(
unsigned
long
*
res
,
const
char
*
password
);
void
make_password_from_salt
(
char
*
to
,
unsigned
long
*
hash_res
);
char
*
scramble
(
char
*
to
,
const
char
*
message
,
const
char
*
password
,
...
...
sql/item_strfunc.cc
View file @
66b1435e
...
...
@@ -1267,7 +1267,9 @@ String *Item_func_password::val_str(String *str)
if
(
res
->
length
()
==
0
)
return
&
empty_string
;
make_scrambled_password
(
tmp_value
,
res
->
c_ptr
());
str
->
set
(
tmp_value
,
16
,
res
->
charset
());
printf
(
"Returned to the function
\n
"
);
str
->
set
(
tmp_value
,
get_password_length
(),
res
->
charset
());
printf
(
"At the exit
\n
"
);
return
str
;
}
...
...
sql/item_strfunc.h
View file @
66b1435e
...
...
@@ -243,11 +243,11 @@ class Item_func_trim :public Item_str_func
class
Item_func_password
:
public
Item_str_func
{
char
tmp_value
[
17
];
char
tmp_value
[
64
];
/* This should be enough for new password format */
public:
Item_func_password
(
Item
*
a
)
:
Item_str_func
(
a
)
{}
String
*
val_str
(
String
*
);
void
fix_length_and_dec
()
{
max_length
=
16
;
}
void
fix_length_and_dec
()
{
max_length
=
get_password_length
()
;
}
const
char
*
func_name
()
const
{
return
"password"
;
}
};
...
...
sql/password.c
View file @
66b1435e
...
...
@@ -37,9 +37,20 @@
#include <my_global.h>
#include <my_sys.h>
#include <m_string.h>
/* To be replaced by SHA1 as Monty will do the Merge */
#include <md5.h>
#include "mysql.h"
/* Character to use as version identifier for version 4.1 */
#define PVERSION41_CHAR '*'
extern
uint
old_passwords
;
/* If prior 4.1 functions to be used */
void
randominit
(
struct
rand_struct
*
rand_st
,
ulong
seed1
,
ulong
seed2
)
{
/* For mysql 3.21.# */
#ifdef HAVE_purify
...
...
@@ -84,13 +95,57 @@ void hash_password(ulong *result, const char *password)
return
;
}
void
make_scrambled_password
(
char
*
to
,
const
char
*
password
)
{
ulong
hash_res
[
2
];
/* Used for pre 4.1 password hashing */
static
uint
salt
=
0
;
/* Salt for 4.1 version password */
unsigned
char
*
slt
=
(
unsigned
char
*
)
&
salt
;
my_MD5_CTX
context
;
unsigned
char
digest
[
16
];
if
(
old_passwords
)
/* Pre 4.1 password encryption */
{
hash_password
(
hash_res
,
password
);
sprintf
(
to
,
"%08lx%08lx"
,
hash_res
[
0
],
hash_res
[
1
]);
}
else
/* New password 4.1 password scrambling */
{
to
[
0
]
=
PVERSION41_CHAR
;
/* New passwords have version prefix */
/* We do not need too strong salt generation so this should be enough */
salt
+=
getpid
()
+
time
(
NULL
)
+
0x01010101
;
/* Use only 2 first bytes from it */
sprintf
(
&
(
to
[
1
]),
"%02x%02x"
,
slt
[
0
],
slt
[
1
]);
/* Waiting for Monty to do the merge */
my_MD5Init
(
&
context
);
/* Use Salt for Hash */
my_MD5Update
(
&
context
,(
unsigned
char
*
)
&
salt
,
2
);
for
(;
*
password
;
password
++
)
{
if
(
*
password
==
' '
||
*
password
==
'\t'
)
continue
;
/* skip space in password */
my_MD5Update
(
&
context
,(
unsigned
char
*
)
&
password
[
0
],
1
);
}
my_MD5Final
(
digest
,
&
context
);
/* Print resulting hash into the password*/
/* sprintf(&(to[5]),
"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
digest[0],digest[1],digest[2],digest[3],digest[4],digest[5],digest[6],
digest[7],digest[8],digest[9],digest[10],digest[11],digest[12],digest[13],
digest[14],digest[15]); */
sprintf
(
&
to
[
5
],
"1234567890123456789012345"
);
}
}
uint
get_password_length
()
{
ulong
hash_res
[
2
];
hash_password
(
hash_res
,
password
)
;
sprintf
(
to
,
"%08lx%08lx"
,
hash_res
[
0
],
hash_res
[
1
])
;
if
(
old_passwords
)
return
16
;
else
return
37
;
}
inline
uint
char_val
(
char
X
)
{
return
(
uint
)
(
X
>=
'0'
&&
X
<=
'9'
?
X
-
'0'
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment