MCPcopy Create free account
hub / github.com/DeNA/HandlerSocket-Plugin-for-MySQL / do_authorization

Method do_authorization

handlersocket/hstcpsvr_worker.cpp:909–942  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

907}
908
909void
910hstcpsvr_worker::do_authorization(char *start, char *finish,
911 hstcpsvr_conn& conn)
912{
913 /* auth type */
914 char *const authtype_begin = start;
915 read_token(start, finish);
916 char *const authtype_end = start;
917 const size_t authtype_len = authtype_end - authtype_begin;
918 skip_one(start, finish);
919 /* key */
920 char *const key_begin = start;
921 read_token(start, finish);
922 char *const key_end = start;
923 const size_t key_len = key_end - key_begin;
924 authtype_end[0] = 0;
925 key_end[0] = 0;
926 char *wp = key_begin;
927 unescape_string(wp, key_begin, key_end);
928 if (authtype_len != 1 || authtype_begin[0] != '1') {
929 return conn.dbcb_resp_short(3, "authtype");
930 }
931 if (cshared.plain_secret.size() == key_len &&
932 memcmp(cshared.plain_secret.data(), key_begin, key_len) == 0) {
933 conn.authorized = true;
934 } else {
935 conn.authorized = false;
936 }
937 if (!conn.authorized) {
938 return conn.dbcb_resp_short(3, "unauth");
939 } else {
940 return conn.dbcb_resp_short(0, "");
941 }
942}
943
944hstcpsvr_worker_ptr
945hstcpsvr_worker_i::create(const hstcpsvr_worker_arg& arg)

Callers

nothing calls this directly

Calls 5

read_tokenFunction · 0.85
skip_oneFunction · 0.85
unescape_stringFunction · 0.85
dbcb_resp_shortMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected