diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
index 719fd5ea614b687c33ee4d0e64fdc5d723bef1bd..d00903a71ea4222acaee7e24b755e53ec9853f89 100644
--- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
@@ -1782,25 +1782,19 @@ void nr_ue_process_mac_pdu(nr_downlink_indication_t *dl_info,
                               | ((uint16_t)((NR_MAC_SUBHEADER_LONG *) pduP)->L2 & 0xff);
                 mac_subheader_len = 3;
               } else {
-                mac_sdu_len = ((NR_MAC_SUBHEADER_LONG *) pduP)->L1;
+                mac_sdu_len = ((NR_MAC_SUBHEADER_SHORT *) pduP)->L;
                 mac_subheader_len = 2;
               }
 
-              // Check if it is a valid CCCH message, we get all 00's messages very often
-              if ( pdu_len != (mac_subheader_len+mac_sdu_len) ) {
-                LOG_D(NR_MAC, "%s() Invalid CCCH message!, pdu_len: %d\n", __func__, pdu_len);
-                return;
-              }
-
-              if ( mac_sdu_len > 0 ) {
+              if ( pdu_len >= mac_sdu_len ) {
 
-                LOG_D(NR_MAC,"DL_SCH_LCID_CCCH with payload len %d: bits\n", mac_sdu_len);
+                LOG_D(NR_MAC,"DL_SCH_LCID_CCCH with payload len %d\n", mac_sdu_len);
 
-                LOG_D(NR_MAC,"RRCSetup received at nr_ue_process_mac_pdu with payload len %d: \n bits, rx bytes: \n", mac_sdu_len);
+                LOG_D(NR_MAC,"RRCSetup received at nr_ue_process_mac_pdu with payload len %d: \n", mac_sdu_len);
                 for (int i = 0; i < mac_subheader_len; i++) {
                   LOG_D(NR_MAC, "MAC header %d: 0x%x\n", i, pduP[i]);
                 }
-                for (int i = 0; i < mac_sdu_len/8; i++) {
+                for (int i = 0; i < mac_sdu_len; i++) {
                   LOG_D(NR_MAC, "%d: 0x%x\n", i, pduP[mac_subheader_len + i]);
                 }
 
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
index 9a0034cbb5858e4e48091635309ea3b9c9c22a0b..06615f63d359fc4f8c2624a57f31533990e084a6 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
@@ -1377,6 +1377,16 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
                        pdsch_pdu_rel15->BWPSize,
                        nr_mac->sched_ctrlCommon->active_bwp->bwp_Id);
 
+    // Add padding header and zero rest out if there is space left
+    if (mac_pdu_length < harq->tb_size) {
+      NR_MAC_SUBHEADER_FIXED *padding = (NR_MAC_SUBHEADER_FIXED *) &buf[mac_pdu_length];
+      padding->R = 0;
+      padding->LCID = DL_SCH_LCID_PADDING;
+      for(int k = mac_pdu_length+1; k<harq->tb_size; k++) {
+        buf[k] = 0;
+      }
+    }
+
     // DL TX request
     nfapi_nr_pdu_t *tx_req = &nr_mac->TX_req[CC_id].pdu_list[nr_mac->TX_req[CC_id].Number_of_PDUs];
     memcpy(tx_req->TLVs[0].value.direct, harq->tb, sizeof(uint8_t) * harq->tb_size);