diff --git a/src/bnetd/handle_bnet.cpp b/src/bnetd/handle_bnet.cpp
index 47884b1..ee1ee94 100644
--- a/src/bnetd/handle_bnet.cpp
+++ b/src/bnetd/handle_bnet.cpp
@@ -4961,9 +4961,9 @@ namespace pvpgn
 				return -1;
 			}
 
-			if ((rpacket = packet_create(packet_class_bnet)) != NULL) {
+			if ((rpacket = packet_create(packet_class_bnet)) != NULL)
+			{
 				int offset = sizeof(t_client_clanmember_rankupdate_req);
-				const char *username;
 				char status;
 				t_clan *clan;
 				t_clanmember *dest_member;
@@ -4974,7 +4974,14 @@ namespace pvpgn
 				packet_set_type(rpacket, SERVER_CLANMEMBER_RANKUPDATE_REPLY);
 				bn_int_set(&rpacket->u.server_clanmember_rankupdate_reply.count,
 					bn_int_get(packet->u.client_clanmember_rankupdate_req.count));
-				username = packet_get_str_const(packet, offset, MAX_USERNAME_LEN);
+				const char* const username = packet_get_str_const(packet, offset, MAX_USERNAME_LEN);
+				if (!username)
+				{
+					eventlog(eventlog_level_error, __FUNCTION__, "[{}] Could not retrieve username from CLANMEMBER_RANKUPDATE_REQ packet", conn_get_socket(c));
+					packet_del_ref(rpacket);
+					return -1;
+				}
+
 				offset += (std::strlen(username) + 1);
 				if (packet_get_size(packet) < offset + 1)
 				{