[sr-dev] git:master: acc: safety check for accounted values not to be NULL

Daniel-Constantin Mierla miconda at gmail.com
Fri Jul 26 14:56:26 CEST 2013


Module: sip-router
Branch: master
Commit: fb3a5f7022ebd20fc516b5b8303a0274bda18258
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=fb3a5f7022ebd20fc516b5b8303a0274bda18258

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Fri Jul 26 14:55:38 2013 +0200

acc: safety check for accounted values not to be NULL

- based on a patch by  Federico Cabiddu, FS#327

---

 modules/acc/acc.c       |   16 ++++++++++------
 modules/acc/acc_logic.c |    2 +-
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/modules/acc/acc.c b/modules/acc/acc.c
index d4fd89c..0a563d6 100644
--- a/modules/acc/acc.c
+++ b/modules/acc/acc.c
@@ -241,13 +241,15 @@ int acc_log_request( struct sip_msg *rq)
 		memcpy(p, log_attrs[i].s, log_attrs[i].len);
 		p += log_attrs[i].len;
 		*(p++) = A_EQ_CHR;
-		memcpy(p, val_arr[i].s, val_arr[i].len);
-		p += val_arr[i].len;
+		if (val_arr[i].s != NULL) {
+			memcpy(p, val_arr[i].s, val_arr[i].len);
+			p += val_arr[i].len;
+		}
 	}
 
 	/* get per leg attributes */
 	if ( leg_info ) {
-	        n = legs2strar(leg_info,rq,val_arr+m,int_arr+m,type_arr+m, 1);
+		n = legs2strar(leg_info,rq,val_arr+m,int_arr+m,type_arr+m, 1);
 		do {
 			for (i=m; i<m+n; i++) {
 				if (p+1+log_attrs[i].len+1+val_arr[i].len >= log_msg_end) {
@@ -259,10 +261,12 @@ int acc_log_request( struct sip_msg *rq)
 				memcpy(p, log_attrs[i].s, log_attrs[i].len);
 				p += log_attrs[i].len;
 				*(p++) = A_EQ_CHR;
-				memcpy(p, val_arr[i].s, val_arr[i].len);
-				p += val_arr[i].len;
+				if (val_arr[i].s != NULL) {
+					memcpy(p, val_arr[i].s, val_arr[i].len);
+					p += val_arr[i].len;
+				}
 			}
-		}while (p!=log_msg_end && (n=legs2strar(leg_info,rq,val_arr+m,
+		} while (p!=log_msg_end && (n=legs2strar(leg_info,rq,val_arr+m,
 							int_arr+m,type_arr+m,
 							0))!=0);
 	}
diff --git a/modules/acc/acc_logic.c b/modules/acc/acc_logic.c
index f2efaa7..55b4196 100644
--- a/modules/acc/acc_logic.c
+++ b/modules/acc/acc_logic.c
@@ -220,7 +220,7 @@ int w_acc_db_request(struct sip_msg *rq, char *comment, char *table)
 	if(acc_db_set_table_name(rq, (void*)table, NULL)<0) {
 		LM_ERR("cannot set table name\n");
 		return -1;
-    }
+	}
 	env_set_to( rq->to );
 	env_set_comment((struct acc_param*)comment);
 	return acc_db_request(rq);




More information about the sr-dev mailing list