diff --git a/include/asterisk/cdr.h b/include/asterisk/cdr.h
index 6099fa8ac2152d691f077fb753b9049ae16df379..807bb2db83430011e53f98f84503958a5d0d8e33 100644
--- a/include/asterisk/cdr.h
+++ b/include/asterisk/cdr.h
@@ -358,7 +358,7 @@ struct ast_cdr {
 	/*! SessionId */
 	unsigned int sessionId;
 	/*! SIPSessionID */
-	char SIPSessionID[33];
+	char SIPSessionID[128];
 	/*! sipIpAddress */
 	char sipIpAddress[40];
 	/*! farEndIPAddress */
diff --git a/include/asterisk/stasis_channels.h b/include/asterisk/stasis_channels.h
index 5a754f6715d532903c2966053a6bfb5ddc137384..0fbab12adb516e9633f668c118606cbb49f5a8b0 100644
--- a/include/asterisk/stasis_channels.h
+++ b/include/asterisk/stasis_channels.h
@@ -158,7 +158,7 @@ struct ast_channel_snapshot {
 	struct varshead *manager_vars;                    /*!< Variables to be appended to manager events */
 	struct varshead *ari_vars;                        /*!< Variables to be appended to ARI events */
 	unsigned int sessionId;                           /*!< SessionId */
-	char SIPSessionID[33];				  /*!< Session-ID */
+	char SIPSessionID[128];                           /*!< Session-ID */
 	char sipIpAddress[40];                            /*!< SIP IP Address */
 	char farEndIPAddress[40];                         /*!< Far End IP Address */
 	unsigned int sipResponseCode;                     /*!< SIP Response Code for Invite */
diff --git a/main/channel_internal_api.c b/main/channel_internal_api.c
index 543919471aaae96686ceddb1dcf679d076e8ac7d..6f1a778da98d0058b64c7bf18fab81c3edfd8f16 100644
--- a/main/channel_internal_api.c
+++ b/main/channel_internal_api.c
@@ -225,7 +225,7 @@ struct ast_channel {
 	struct ast_channel_snapshot *snapshot; /*!< The current up to date snapshot of the channel */
 	struct ast_flags snapshot_segment_flags; /*!< Flags regarding the segments of the snapshot */
 	unsigned int sessionId; /*!< Session Id from SDP for channel */
-	char SIPSessionID[33]; /* SIPSessionID from  Session-ID header */
+	char SIPSessionID[128]; /* SIPSessionID from  Session-ID header */
 	char sipIpAddress[40];  /*!< local IP address that sip client binds to */
 	char farEndIPAddress[40];  /*!< Far End IP Address */
 	unsigned int sipResponseCode; /*!< SIP response Code */
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index 551449d190e5fa1eff6a98e13557d05261cde794..0a2b2574ad50684c5052056ab785f8b60fcd906b 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -4798,9 +4798,9 @@ static void handle_incoming_response(struct ast_sip_session *session, pjsip_rx_d
 			pjsip_generic_string_hdr *SessionID = NULL;
 			static const pj_str_t headerName = { "Session-ID", 10 };
 			SessionID = pjsip_msg_find_hdr_by_name(rdata->msg_info.msg, &headerName, NULL);
-			char value[33] = {0};
+			char value[128] = {0};
 			if (SessionID)
-				ast_copy_pj_str(&value, &SessionID->hvalue, pj_strlen(&SessionID->hvalue) + 1);
+				ast_copy_pj_str(&value, &SessionID->hvalue, sizeof(value));
 
 			ast_channel_SIPSessionID_set(session->channel, value);
 		}