diff --git a/src/frontend/session.c b/src/frontend/session.c
index b1e527a06708e53a74e94a071d4d9fb82cf04037..2b568b1948ee5366df066a1d2217ff48a1ba23bc 100644 (file)
--- a/src/frontend/session.c
+++ b/src/frontend/session.c
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
+
#include "sysdb.h"
#include "sysdb.h"
-#include "frontend/connection.h"
+#include "frontend/connection-private.h"
+
+#include <string.h>
/*
* public API
*/
int
/*
* public API
*/
int
-sdb_session_start(sdb_conn_t *conn)
+sdb_fe_session_start(sdb_conn_t *conn)
{
{
+ const char *username;
+
if ((! conn) || (conn->username))
return -1;
if (conn->cmd != CONNECTION_STARTUP)
return -1;
if ((! conn) || (conn->username))
return -1;
if (conn->cmd != 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 */
/* XXX: for now, simply accept all connections */
+ conn->username = strndup(username, conn->cmd_len);
+ if (! conn->username) {
+ sdb_strbuf_sprintf(conn->errbuf, "Authentication failed");
+ return -1;
+ }
sdb_connection_send(conn, CONNECTION_OK, 0, NULL);
return 0;
sdb_connection_send(conn, CONNECTION_OK, 0, NULL);
return 0;
-} /* session_start */
+} /* sdb_fe_session_start */
/* vim: set tw=78 sw=4 ts=4 noexpandtab : */
/* vim: set tw=78 sw=4 ts=4 noexpandtab : */