[Pkg-voip-commits] [dahdi-tools] 67/285: xpp: clean 'Extrainfo' EEPROM field

tzafrir at debian.org tzafrir at debian.org
Thu Jul 7 19:18:31 UTC 2016


This is an automated email from the git hooks/post-receive script.

tzafrir pushed a commit to branch master
in repository dahdi-tools.

commit 971a45a8072e5a0b0e5db17498d7254d7054c0df
Author: Oron Peled <oron.peled at xorcom.com>
Date:   Thu Mar 15 20:29:09 2012 +0000

    xpp: clean 'Extrainfo' EEPROM field
    
    * Extrainfo field contains junk data
    * Caused by:
      - The field is initialized to 0xFF values
      - There was no null termination (and no room to add it)
    * New code:
      - Ensure that show_extrainfo() have null termination even if EEPROM
        field is full.
      - Replace trailing 0xFF characters with '\0' when reading this field
      - Since our default burned EEPROM contain Extrainfo field full of
        0xFF characters, this would make them look as null filled.
    
    Internal Issue-Id: #1341
    Signed-off-by: Oron Peled <oron.peled at xorcom.com>
    Acked-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    
    git-svn-id: http://svn.astersk.org/svn/dahdi/tools/trunk@10491 17933a7a-c749-41c5-a318-cba88f637d49
---
 xpp/mpp.h          |  2 +-
 xpp/mpptalk.c      | 16 +++++++++++++++-
 xpp/mpptalk_defs.h |  2 ++
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/xpp/mpp.h b/xpp/mpp.h
index 23a0ce9..e6b8e3a 100644
--- a/xpp/mpp.h
+++ b/xpp/mpp.h
@@ -83,7 +83,7 @@ struct capkey {
 } PACKED;
 
 struct extrainfo {
-	char		text[24];
+	char		text[EXTRAINFO_SIZE];
 } PACKED;
 
 struct mpp_header {
diff --git a/xpp/mpptalk.c b/xpp/mpptalk.c
index a8bf12a..6b33743 100644
--- a/xpp/mpptalk.c
+++ b/xpp/mpptalk.c
@@ -366,7 +366,17 @@ int mpp_extrainfo_get(struct astribank_device *astribank, struct extrainfo *info
 	}
 	assert(reply->header.op == MPP_EXTRAINFO_GET_REPLY);
 	if(info) {
+		int i;
+
 		memcpy(info, (void *)&CMD_FIELD(reply, MPP, EXTRAINFO_GET_REPLY, info), sizeof(*info));
+		/*
+		 * clean non-printing characters
+		 */
+		for (i = sizeof(*info) - 1; i >= 0; i--) {
+			if (info->text[i] != (char)0xFF)
+				break;
+			info->text[i] = '\0';
+		}
 	}
 	free_command(reply);
 	return 0;
@@ -876,7 +886,11 @@ void show_astribank_status(struct astribank_device *astribank, FILE *fp)
 
 void show_extrainfo(const struct extrainfo *extrainfo, FILE *fp)
 {
-	fprintf(fp, "Extrainfo:             : %s\n", (const char *)(extrainfo->text));
+	char	buf[EXTRAINFO_SIZE + 1];
+
+	memcpy(buf, extrainfo->text, EXTRAINFO_SIZE);
+	buf[EXTRAINFO_SIZE] = '\0';	/* assure null termination */
+	fprintf(fp, "Extrainfo:             : '%s'\n", buf);
 }
 
 int twinstar_show(struct astribank_device *astribank, FILE *fp)
diff --git a/xpp/mpptalk_defs.h b/xpp/mpptalk_defs.h
index e38f381..bc0b83b 100644
--- a/xpp/mpptalk_defs.h
+++ b/xpp/mpptalk_defs.h
@@ -108,4 +108,6 @@ enum dev_dest {
 	DEST_EEPROM	= 0x02,
 };
 
+#define	EXTRAINFO_SIZE	24
+
 #endif	/* MPPTALK_DEFS_H */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-voip/dahdi-tools.git



More information about the Pkg-voip-commits mailing list