* [PATCH 1/3] Fix CTLV three-byte tag parsing.
@ 2010-04-22 8:11 Andrzej Zaborowski
2010-04-22 21:17 ` andrzej zaborowski
2010-04-22 21:58 ` Denis Kenzior
0 siblings, 2 replies; 5+ messages in thread
From: Andrzej Zaborowski @ 2010-04-22 8:11 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1376 bytes --]
---
src/simutil.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/simutil.c b/src/simutil.c
index 9fb111f..822938c 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -210,7 +210,7 @@ void comprehension_tlv_iter_init(struct comprehension_tlv_iter *iter,
iter->data = 0;
}
-/* Comprehension TLVs defined in Section 7 of ETSI TS 102.220 */
+/* Comprehension TLVs defined in Section 7 of ETSI TS 101.220 */
gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
{
const unsigned char *pdu = iter->pdu + iter->pos;
@@ -230,18 +230,18 @@ gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
return FALSE;
/*
- * ETSI TS 102.220, Section 7.1.1.2
+ * ETSI TS 101.220, Section 7.1.1.2
*
* If byte 1 of the tag is equal to 0x7F, then the tag is encoded
- * on the following two bytes, with bit 8 of the 2nd byte of the tag
- * being the CR flag.
+ * on the following two bytes, with bit 8 of the 1st byte of the tag
+ * as the most significant bit.
*/
- if (tag == 0x7F) {
+ if (tag == 0x7F && !cr) {
if ((pdu + 2) > end)
return FALSE;
cr = bit_field(pdu[0], 7, 1);
- tag = ((pdu[0] & 0x7f) << 7) | pdu[1];
+ tag = ((pdu[0] & 0x7f) << 8) | pdu[1];
if (tag < 0x0001 || tag > 0x7fff)
return FALSE;
--
1.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] Fix CTLV three-byte tag parsing.
2010-04-22 21:58 ` Denis Kenzior
@ 2010-04-22 9:13 ` Andrzej Zaborowski
2010-04-22 22:45 ` Denis Kenzior
0 siblings, 1 reply; 5+ messages in thread
From: Andrzej Zaborowski @ 2010-04-22 9:13 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1496 bytes --]
---
src/simutil.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/simutil.c b/src/simutil.c
index 31b21c7..f994455 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -210,7 +210,7 @@ void comprehension_tlv_iter_init(struct comprehension_tlv_iter *iter,
iter->data = 0;
}
-/* Comprehension TLVs defined in Section 7 of ETSI TS 102.220 */
+/* Comprehension TLVs defined in Section 7 of ETSI TS 101.220 */
gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
{
const unsigned char *pdu = iter->pdu + iter->pos;
@@ -222,15 +222,15 @@ gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
if (pdu == end)
return FALSE;
+ if (*pdu == 0x00 || *pdu == 0xFF || *pdu == 0x80)
+ return FALSE;
+
cr = bit_field(*pdu, 7, 1);
tag = bit_field(*pdu, 0, 7);
pdu++;
- if (tag == 0x00 || tag == 0xFF || tag == 0x80)
- return FALSE;
-
/*
- * ETSI TS 102.220, Section 7.1.1.2
+ * ETSI TS 101.220, Section 7.1.1.2
*
* If byte 1 of the tag is equal to 0x7F, then the tag is encoded
* on the following two bytes, with bit 8 of the 2nd byte of the tag
@@ -241,7 +241,7 @@ gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
return FALSE;
cr = bit_field(pdu[0], 7, 1);
- tag = ((pdu[0] & 0x7f) << 7) | pdu[1];
+ tag = ((pdu[0] & 0x7f) << 8) | pdu[1];
if (tag < 0x0001 || tag > 0x7fff)
return FALSE;
--
1.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] Fix CTLV three-byte tag parsing.
2010-04-22 8:11 [PATCH 1/3] Fix CTLV three-byte tag parsing Andrzej Zaborowski
@ 2010-04-22 21:17 ` andrzej zaborowski
2010-04-22 21:58 ` Denis Kenzior
1 sibling, 0 replies; 5+ messages in thread
From: andrzej zaborowski @ 2010-04-22 21:17 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 618 bytes --]
On 22 April 2010 10:11, Andrzej Zaborowski <andrew.zaborowski@intel.com> wrote:
> * If byte 1 of the tag is equal to 0x7F, then the tag is encoded
> - * on the following two bytes, with bit 8 of the 2nd byte of the tag
> - * being the CR flag.
> + * on the following two bytes, with bit 8 of the 1st byte of the tag
> + * as the most significant bit.
> */
I noticed my comment change is wrong, it should probably say "bit 8 of
the 1st byte of the tag being the CR flag" (1st referring to the first
of the last two bytes).
Best regards
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0013-Fix-CTLV-three-byte-tag-parsing.patch --]
[-- Type: text/x-patch, Size: 1541 bytes --]
From 97dd0f7de6c2b2762cfd5dd18973d56e693b8bbf Mon Sep 17 00:00:00 2001
From: Andrzej Zaborowski <andrew.zaborowski@intel.com>
Date: Thu, 22 Apr 2010 01:15:56 +0200
Subject: [PATCH 1/3] Fix CTLV three-byte tag parsing.
---
src/simutil.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/simutil.c b/src/simutil.c
index 9fb111f..822938c 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -210,7 +210,7 @@ void comprehension_tlv_iter_init(struct comprehension_tlv_iter *iter,
iter->data = 0;
}
-/* Comprehension TLVs defined in Section 7 of ETSI TS 102.220 */
+/* Comprehension TLVs defined in Section 7 of ETSI TS 101.220 */
gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
{
const unsigned char *pdu = iter->pdu + iter->pos;
@@ -230,18 +230,18 @@ gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
return FALSE;
/*
- * ETSI TS 102.220, Section 7.1.1.2
+ * ETSI TS 101.220, Section 7.1.1.2
*
* If byte 1 of the tag is equal to 0x7F, then the tag is encoded
- * on the following two bytes, with bit 8 of the 2nd byte of the tag
- * being the CR flag.
+ * on the following two bytes, with bit 8 of the 1st byte of the tag
+ * being the CR flag.
*/
- if (tag == 0x7F) {
+ if (tag == 0x7F && !cr) {
if ((pdu + 2) > end)
return FALSE;
cr = bit_field(pdu[0], 7, 1);
- tag = ((pdu[0] & 0x7f) << 7) | pdu[1];
+ tag = ((pdu[0] & 0x7f) << 8) | pdu[1];
if (tag < 0x0001 || tag > 0x7fff)
return FALSE;
--
1.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] Fix CTLV three-byte tag parsing.
2010-04-22 8:11 [PATCH 1/3] Fix CTLV three-byte tag parsing Andrzej Zaborowski
2010-04-22 21:17 ` andrzej zaborowski
@ 2010-04-22 21:58 ` Denis Kenzior
2010-04-22 9:13 ` [PATCH] " Andrzej Zaborowski
1 sibling, 1 reply; 5+ messages in thread
From: Denis Kenzior @ 2010-04-22 21:58 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1804 bytes --]
Hi Andrew,
> ---
> src/simutil.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/src/simutil.c b/src/simutil.c
> index 9fb111f..822938c 100644
> --- a/src/simutil.c
> +++ b/src/simutil.c
> @@ -210,7 +210,7 @@ void comprehension_tlv_iter_init(struct
> comprehension_tlv_iter *iter, iter->data = 0;
> }
>
> -/* Comprehension TLVs defined in Section 7 of ETSI TS 102.220 */
> +/* Comprehension TLVs defined in Section 7 of ETSI TS 101.220 */
> gboolean comprehension_tlv_iter_next(struct comprehension_tlv_iter *iter)
> {
> const unsigned char *pdu = iter->pdu + iter->pos;
> @@ -230,18 +230,18 @@ gboolean comprehension_tlv_iter_next(struct
> comprehension_tlv_iter *iter) return FALSE;
>
> /*
> - * ETSI TS 102.220, Section 7.1.1.2
> + * ETSI TS 101.220, Section 7.1.1.2
> *
> * If byte 1 of the tag is equal to 0x7F, then the tag is encoded
> - * on the following two bytes, with bit 8 of the 2nd byte of the tag
> - * being the CR flag.
> + * on the following two bytes, with bit 8 of the 1st byte of the tag
> + * as the most significant bit.
Please keep the comment about the CR flag, I think that is useful.
> */
> - if (tag == 0x7F) {
> + if (tag == 0x7F && !cr) {
This isn't actually necessary. However, the statement:
if (tag == 0x00 || tag == 0xFF || tag == 0x80)
return FALSE;
Actually needs to be moved up and tag changed to *pdu.
> if ((pdu + 2) > end)
> return FALSE;
>
> cr = bit_field(pdu[0], 7, 1);
> - tag = ((pdu[0] & 0x7f) << 7) | pdu[1];
> + tag = ((pdu[0] & 0x7f) << 8) | pdu[1];
>
> if (tag < 0x0001 || tag > 0x7fff)
> return FALSE;
>
Can you resubmit the patch with these changes?
Thanks,
-Denis
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Fix CTLV three-byte tag parsing.
2010-04-22 9:13 ` [PATCH] " Andrzej Zaborowski
@ 2010-04-22 22:45 ` Denis Kenzior
0 siblings, 0 replies; 5+ messages in thread
From: Denis Kenzior @ 2010-04-22 22:45 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 171 bytes --]
Hi Andrew,
> ---
> src/simutil.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-04-22 22:45 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-22 8:11 [PATCH 1/3] Fix CTLV three-byte tag parsing Andrzej Zaborowski
2010-04-22 21:17 ` andrzej zaborowski
2010-04-22 21:58 ` Denis Kenzior
2010-04-22 9:13 ` [PATCH] " Andrzej Zaborowski
2010-04-22 22:45 ` Denis Kenzior
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.