X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Ffrontend%2Fsession.c;h=b0fc7803e2a0e23ab53a05cc6a1c694c4251b824;hp=6403469a1e2d15020a939f130a54ed20c8711704;hb=5e20183e0a2264e0aed972ceff913374ab970248;hpb=2e2e989712ec5991526b3aaeec011440adb5bf7e diff --git a/src/frontend/session.c b/src/frontend/session.c index 6403469..b0fc780 100644 --- a/src/frontend/session.c +++ b/src/frontend/session.c @@ -25,10 +25,16 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#if HAVE_CONFIG_H +# include "config.h" +#endif /* HAVE_CONFIG_H */ + #include "sysdb.h" #include "frontend/connection-private.h" +#include + /* * public API */ @@ -36,14 +42,28 @@ int sdb_fe_session_start(sdb_conn_t *conn) { + const char *username; + if ((! conn) || (conn->username)) return -1; - if (conn->cmd != CONNECTION_STARTUP) + if (conn->cmd != SDB_CONNECTION_STARTUP) return -1; + username = sdb_strbuf_string(conn->buf); + if ((! username) || (! conn->cmd_len) || (! *username)) { + sdb_strbuf_sprintf(conn->errbuf, "Invalid empty username"); + return -1; + } + /* XXX: for now, simply accept all connections */ - sdb_connection_send(conn, CONNECTION_OK, 0, NULL); + conn->username = strndup(username, conn->cmd_len); + if (! conn->username) { + sdb_strbuf_sprintf(conn->errbuf, "Authentication failed"); + return -1; + } + sdb_connection_send(conn, SDB_CONNECTION_OK, 0, NULL); + conn->ready = 1; return 0; } /* sdb_fe_session_start */