From 72a500405ac35f45697e3395fc660a214a74d1c6 Mon Sep 17 00:00:00 2001 From: Derek Holloway Date: Sat, 26 Jul 2025 10:21:27 -0700 Subject: [PATCH] Fixed database crashing on NULL returns --- .../Services/DatabaseService/Account.cs | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/Server/Services/DatabaseService/Account.cs b/src/Server/Services/DatabaseService/Account.cs index c336f4f..5d5f536 100755 --- a/src/Server/Services/DatabaseService/Account.cs +++ b/src/Server/Services/DatabaseService/Account.cs @@ -22,20 +22,20 @@ namespace Auth.Services.DatabaseService { using( DbDataReader reader = await cmd.ExecuteReaderAsync() ) { while( await reader.ReadAsync() ) { if( reader == null ) { break; } - int _id = reader.GetInt32("ID"); - string _username = reader.GetString("UserName"); - string _email = reader.GetString("Email"); - bool _emailVerified = reader.GetBoolean("EmailVerified"); - string _passwordhash = reader.GetString("PasswordHash"); - bool _failedpasswordlock = reader.GetBoolean( "FailedPasswordLock" ); - int _passwordattempts = reader.GetInt32( "PasswordAttempts" ); - int _curpasswordattempts = reader.GetInt32( "CurrentPasswordAttempts" ); - string _role = reader.GetString( "Role" ); - string _emailtoken = reader.GetString( "EmailToken" ); - DateTime _emailtokencreated = reader.GetDateTime( "EmailTokenCreation" ); - string _passwordtoken = reader.GetString( "PasswordToken" ); - DateTime _passwordtokencreated = reader.GetDateTime( "PasswordTokenCreation" ); - string _dataserver = reader.GetString( "DataServer" ); + int _id = !reader.IsDBNull("ID") ? reader.GetInt32("ID") : -1; + string _username = !reader.IsDBNull("UserName") ? reader.GetString("UserName") : ""; + string _email = !reader.IsDBNull("Email") ? reader.GetString("Email") : ""; + bool _emailVerified = !reader.IsDBNull("EmailVerified") ? reader.GetBoolean("EmailVerified") : false; + string _passwordhash = !reader.IsDBNull("PasswordHash") ? reader.GetString("PasswordHash") : ""; + bool _failedpasswordlock = !reader.IsDBNull("FailedPasswordLock") ? reader.GetBoolean("FailedPasswordLock") : false; + int _passwordattempts = !reader.IsDBNull("PasswordAttempts") ? reader.GetInt32("PasswordAttempts") : -1; + int _curpasswordattempts = !reader.IsDBNull("CurrentPasswordAttempts") ? reader.GetInt32("CurrentPasswordAttempts") : -1; + string _role = !reader.IsDBNull("Role") ? reader.GetString("Role") : ""; + string _emailtoken = !reader.IsDBNull("EmailToken") ? reader.GetString("EmailToken") : ""; + DateTime _emailtokencreated = !reader.IsDBNull("EmailTokenCreation") ? reader.GetDateTime("EmailTokenCreation") : DateTime.MinValue; + string _passwordtoken = !reader.IsDBNull("PasswordToken") ? reader.GetString("PasswordToken") : ""; + DateTime _passwordtokencreated = !reader.IsDBNull("PasswordTokenCreation") ? reader.GetDateTime("PasswordTokenCreation") : DateTime.MinValue; + string _dataserver = !reader.IsDBNull("DataServer") ? reader.GetString("DataServer") : ""; account = new Account() { ID = _id, @@ -77,20 +77,20 @@ namespace Auth.Services.DatabaseService { if( reader == null ) { break; } - int _id = reader.GetInt32("ID"); - string _username = reader.GetString("UserName"); - string _email = reader.GetString("Email"); - bool _emailVerified = reader.GetBoolean("EmailVerified"); - string _passwordhash = reader.GetString("PasswordHash"); - bool _failedpasswordlock = reader.GetBoolean( "FailedPasswordLock" ); - int _passwordattempts = reader.GetInt32( "PasswordAttempts" ); - int _curpasswordattempts = reader.GetInt32( "CurrentPasswordAttempts" ); - string _role = reader.GetString( "Role" ); - string _emailtoken = reader.GetString( "EmailToken" ); - DateTime _emailtokencreated = reader.GetDateTime( "EmailTokenCreation" ); - string _passwordtoken = reader.GetString( "PasswordToken" ); - DateTime _passwordtokencreated = reader.GetDateTime( "PasswordTokenCreation" ); - string _dataserver = reader.GetString("DataServer"); + int _id = !reader.IsDBNull("ID") ? reader.GetInt32("ID") : -1; + string _username = !reader.IsDBNull("UserName") ? reader.GetString("UserName") : ""; + string _email = !reader.IsDBNull("Email") ? reader.GetString("Email") : ""; + bool _emailVerified = !reader.IsDBNull("EmailVerified") ? reader.GetBoolean("EmailVerified") : false; + string _passwordhash = !reader.IsDBNull("PasswordHash") ? reader.GetString("PasswordHash") : ""; + bool _failedpasswordlock = !reader.IsDBNull("FailedPasswordLock") ? reader.GetBoolean("FailedPasswordLock") : false; + int _passwordattempts = !reader.IsDBNull("PasswordAttempts") ? reader.GetInt32("PasswordAttempts") : -1; + int _curpasswordattempts = !reader.IsDBNull("CurrentPasswordAttempts") ? reader.GetInt32("CurrentPasswordAttempts") : -1; + string _role = !reader.IsDBNull("Role") ? reader.GetString("Role") : ""; + string _emailtoken = !reader.IsDBNull("EmailToken") ? reader.GetString("EmailToken") : ""; + DateTime _emailtokencreated = !reader.IsDBNull("EmailTokenCreation") ? reader.GetDateTime("EmailTokenCreation") : DateTime.MinValue; + string _passwordtoken = !reader.IsDBNull("PasswordToken") ? reader.GetString("PasswordToken") : ""; + DateTime _passwordtokencreated = !reader.IsDBNull("PasswordTokenCreation") ? reader.GetDateTime("PasswordTokenCreation") : DateTime.MinValue; + string _dataserver = !reader.IsDBNull("DataServer") ? reader.GetString("DataServer") : ""; account = new Account() { ID = _id,