Hi Sergey,

On 1/15/21 1:56 PM, Sergey Matyukevich wrote:
Make sure that IMS private identity is a valid UTF8 string before
setting sim->impi field. Otherwise ofono may crash on dbus assert
when SIM properties are reported via org.ofono.SimManager interface.
---
  src/sim.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/sim.c b/src/sim.c
index 33e1245f..2a663e2d 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -1664,7 +1664,8 @@ static void impi_read_cb(int ok, int total_length, int 
record,
                return;
        }
- sim->impi = g_strndup((const char *)data + 2, data[1]);
+       if (g_utf8_validate((const char *)data + 2, data[1], NULL))
+               sim->impi = g_strndup((const char *)data + 2, data[1]);

I assume this code path was tested with a file containing embedded NULs as that is the only way it would have worked.

glib docs [1] say:
"Note that g_utf8_validate() returns FALSE if max_len is positive and any of the max_len bytes are nul."

So I think the above logic would flag such a file as invalid, no?

  }
static void discover_apps_cb(const struct ofono_error *error,
_______________________________________________
ofono mailing list -- [email protected]
To unsubscribe send an email to [email protected]


Regards,
-Denis

[1] https://developer.gnome.org/glib/stable/glib-Unicode-Manipulation.html#g-utf8-validate
_______________________________________________
ofono mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to