[patch] glib20, UTF-8 and string collation

2008-01-09 Thread Alexandre Sunny Kovalenko
I have seen recent commit WRT string collation in devel/glib20 by
marcus, so I have decided to check if there is an interest to fix SEGV
in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.

Good (but by no means only) example of this would be using Evolution to
open mailbox with the mix of KOI-8, CP1251 and UTF-8 message subjects
and order them by the subject. Admittedly, I do not know whether there
are special symbols that trigger the situation or any mix would do. vova
at fbsd ru posted test case mailbox under the link below.

Full discussion including my first approach to fix this problem could be
found here

http://bugzilla.gnome.org/show_bug.cgi?id=492389

Slightly different approach is attached to this E-mail.

Without either patch, my Evolution will core dump on start-up. 

First patch was rejected by gnome folks with the recommendation Don't
do that, which, unfortunately, is not that easy to follow ;)

Any comments from people with the knowledge of gnome, UTF-8 and string
collation will be greatly appreciated.

I am not subscribed to ports@, please, make sure to keep me on CC list
when replying.

-- 
Alexandre Sunny Kovalenko
--- glib/gunidecomp.c.BAK	2008-01-09 09:07:46.0 -0500
+++ glib/gunidecomp.c	2008-01-09 09:17:04.0 -0500
@@ -22,6 +22,7 @@
 #include config.h
 
 #include stdlib.h
+#include string.h
 
 #include glib.h
 #include gunidecomp.h
@@ -528,6 +529,14 @@
   result = g_ucs4_to_utf8 (result_wc, -1, NULL, NULL, NULL);
   g_free (result_wc);
 
+  // Upstream callers rely on the returned pointer to be valid
+  // and produce core if it does not (witness collation routine).
+#define NOT_VALID_UTF8_STRING	*** This was not a valid UTF-8 string ***
+  if(!result)
+  {
+result = g_malloc(strlen(NOT_VALID_UTF8_STRING) + 1);
+strcpy(result, NOT_VALID_UTF8_STRING);
+  }
   return result;
 }
 
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to [EMAIL PROTECTED]

Re: [patch] glib20, UTF-8 and string collation

2008-01-09 Thread Joe Marcus Clarke

On Wed, 2008-01-09 at 10:53 -0500, Alexandre Sunny Kovalenko wrote:
 I have seen recent commit WRT string collation in devel/glib20 by
 marcus, so I have decided to check if there is an interest to fix SEGV
 in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.

Any commits I have made in the area of UTF-8 are completely accidental.
I am not the UTF-8 guy.  Both bland and jylefort have expressed interest
in this.  Perhaps one of them will comment.

 
 Good (but by no means only) example of this would be using Evolution to
 open mailbox with the mix of KOI-8, CP1251 and UTF-8 message subjects
 and order them by the subject. Admittedly, I do not know whether there
 are special symbols that trigger the situation or any mix would do. vova
 at fbsd ru posted test case mailbox under the link below.
 
 Full discussion including my first approach to fix this problem could be
 found here
 
 http://bugzilla.gnome.org/show_bug.cgi?id=492389
 
 Slightly different approach is attached to this E-mail.

I'm not sure why the malloc and copy.  Why not just use g_strdup()?

 
 Without either patch, my Evolution will core dump on start-up. 
 
 First patch was rejected by gnome folks with the recommendation Don't
 do that, which, unfortunately, is not that easy to follow ;)
 
 Any comments from people with the knowledge of gnome, UTF-8 and string
 collation will be greatly appreciated.

I'm hoping someone like bland chimes in here.  Touching glib in such a
way makes me nervous, but bland has had experience, especially with
Cyrillic, so maybe he can offer some additional tips or insight.

Joe

-- 
PGP Key : http://www.marcuscom.com/pgp.asc


signature.asc
Description: This is a digitally signed message part


Re: [patch] glib20, UTF-8 and string collation

2008-01-09 Thread Alexandre Sunny Kovalenko

On Wed, 2008-01-09 at 12:35 -0500, Joe Marcus Clarke wrote: 
 On Wed, 2008-01-09 at 10:53 -0500, Alexandre Sunny Kovalenko wrote:
  I have seen recent commit WRT string collation in devel/glib20 by
  marcus, so I have decided to check if there is an interest to fix SEGV
  in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.
 
 Any commits I have made in the area of UTF-8 are completely accidental.
 I am not the UTF-8 guy.  Both bland and jylefort have expressed interest
 in this.  Perhaps one of them will comment.

I hope so. Just in case, they would decide to, I have reduced the
situation to the small program below. I get 

GLib-CRITICAL **: g_convert: assertion `str != NULL' failed

and no core dump from this simple program, whereas Evolution manages to
pass NULL to strcoll further down in g_utf8_collate and get SEGV for its
pains.

Conversely, if the answer still is Evolution should not have done
that, I will happily crawl back under my rock and keep my patch
locally.

#include stdio.h

#include glib.h

int main(int argc, char *argv[])
{
  GString *str1 = g_string_new(\xf3\xcf\xd2\xcf\xcb\x20\xd7\xcf\xd3\xc5
\xcd\xd8\x20\xcf\xc2\xc5\xda\xd8\xd1\xce\x2e\x2e\x2e);
  GString *str2 = g_string_new(Goodbye, cruel world!);

  printf(%s\n, str1-str);
  if(g_utf8_collate(str1-str, str2-str) == 0)
g_print(%s and %s are equal\n, str1-str, str2-str);
  else
g_print(%s and %s are NOT equal\n, str1-str, str2-str);
}

built with

gcc `pkg-config --cflags glib-2.0` -g -o testCollate testCollate.c
`pkg-config --libs glib-2.0` 

on 

7.0-PRERELEASE FreeBSD 7.0-PRERELEASE #0: Sat Jan  5 22:37:29 EST 2008

using

glib-2.14.5 and libiconv-1.11_1

option fix string collation was set during the build of glib.

 I'm not sure why the malloc and copy.  Why not just use g_strdup()?

Because I don't know much of anything about glib programming, and I was 
suspecting that someone will use g_free() on the result, so g_malloc() 
sounded like the plausible candidate. I really hope someone with 
the necessary knowledge will come up with the right solution, but, for
now, I do what I can.

-- 
Alexandre Sunny Kovalenko

___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: [patch] glib20, UTF-8 and string collation

2008-01-09 Thread Joe Marcus Clarke

On Wed, 2008-01-09 at 19:40 -0500, Alexandre Sunny Kovalenko wrote:
 On Wed, 2008-01-09 at 12:35 -0500, Joe Marcus Clarke wrote: 
  On Wed, 2008-01-09 at 10:53 -0500, Alexandre Sunny Kovalenko wrote:
   I have seen recent commit WRT string collation in devel/glib20 by
   marcus, so I have decided to check if there is an interest to fix SEGV
   in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.
  
  Any commits I have made in the area of UTF-8 are completely accidental.
  I am not the UTF-8 guy.  Both bland and jylefort have expressed interest
  in this.  Perhaps one of them will comment.
 
 I hope so. Just in case, they would decide to, I have reduced the
 situation to the small program below. I get 
 
 GLib-CRITICAL **: g_convert: assertion `str != NULL' failed
 
 and no core dump from this simple program, whereas Evolution manages to
 pass NULL to strcoll further down in g_utf8_collate and get SEGV for its
 pains.

That sounds like a no-no for Evolution to be dereferencing a NULL
pointer.  Hopefully they'd fix this to prevent the problem.

 
 Conversely, if the answer still is Evolution should not have done
 that, I will happily crawl back under my rock and keep my patch
 locally.

I can't imagine you're alone in this.  But then again, any Cyrillic mail
that comes my way is always spam, so what do I know.

Joe

-- 
PGP Key : http://www.marcuscom.com/pgp.asc


signature.asc
Description: This is a digitally signed message part


Re: [patch] glib20, UTF-8 and string collation

2008-01-09 Thread Alexandre Sunny Kovalenko

On Wed, 2008-01-09 at 20:16 -0500, Joe Marcus Clarke wrote: 
 On Wed, 2008-01-09 at 19:40 -0500, Alexandre Sunny Kovalenko wrote:
  On Wed, 2008-01-09 at 12:35 -0500, Joe Marcus Clarke wrote: 
   On Wed, 2008-01-09 at 10:53 -0500, Alexandre Sunny Kovalenko wrote:
I have seen recent commit WRT string collation in devel/glib20 by
marcus, so I have decided to check if there is an interest to fix SEGV
in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.
   
   Any commits I have made in the area of UTF-8 are completely accidental.
   I am not the UTF-8 guy.  Both bland and jylefort have expressed interest
   in this.  Perhaps one of them will comment.
  
  I hope so. Just in case, they would decide to, I have reduced the
  situation to the small program below. I get 
  
  GLib-CRITICAL **: g_convert: assertion `str != NULL' failed
  
  and no core dump from this simple program, whereas Evolution manages to
  pass NULL to strcoll further down in g_utf8_collate and get SEGV for its
  pains.
 
 That sounds like a no-no for Evolution to be dereferencing a NULL
 pointer.  Hopefully they'd fix this to prevent the problem.

It's not Evolution, it is glib, specifically g_utf8_collate, which would
call strcoll(3) blindly on the return of g_utf8_normalize inside
gunicollate.c. And now, I can get core dumped out of this simple program
as well, merely by setting CHARSET=en_US.UTF-8 (I had it is ASCII in the
terminal window, which would trigger different path within
g_utf8_collate).

 
  
  Conversely, if the answer still is Evolution should not have done
  that, I will happily crawl back under my rock and keep my patch
  locally.
 
 I can't imagine you're alone in this.  But then again, any Cyrillic mail
 that comes my way is always spam, so what do I know.

More importantly, it is UTF-8 spam -- in order to trigger this, you need
KOI8-R or CP1251, and in the sorted column to boot. I suspect that
Latin1 or ShiftJIS would do the trick too.

Now, how about this: would you be amenable to this Really Harmless(tm)
patch, which merely adds error checking along the lines used in the same
function, about dozen lines up ;)

--- glib/gunicollate.c.B 2008-01-09 20:48:25.0 -0500
+++ glib/gunicollate.c  2008-01-09 20:49:35.0 -0500
@@ -166,6 +166,9 @@
   str1_norm = g_utf8_normalize (str1, -1, G_NORMALIZE_ALL_COMPOSE);
   str2_norm = g_utf8_normalize (str2, -1, G_NORMALIZE_ALL_COMPOSE);
 
+  g_return_val_if_fail (str1_norm != NULL, 0);
+  g_return_val_if_fail (str2_norm != NULL, 0);
+
   if (g_get_charset (charset))
 {
   result = strcoll (str1_norm, str2_norm);

I can add it to your files/extra-patch-glib_gunicollate.c, or package 
it separately -- I really hate it when I start Evolution after portupgrade
to write some E-mails real quick, only to find out that I have forgotten
to patch glib... again.

-- 
Alexandre Sunny Kovalenko

___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: [patch] glib20, UTF-8 and string collation

2008-01-09 Thread Alexander Nedotsukov

Alexandre,

The problem you exposed have its roots in Evo code. g_utf8_* stuff 
defined to work on *utf-8* strings only and have undefined behaviour on 
MBCS strings. It may sound stupid but crashes are allowed in this case 
:-) Even we apply your latest patch the true problem solution will be 
only postponed. We have to continue with Evo source. Find subject parser 
part and ensure that it will be utf-8 encoded string at the end.


All the best,
Alexander.

Alexandre Sunny Kovalenko wrote:
On Wed, 2008-01-09 at 20:16 -0500, Joe Marcus Clarke wrote: 
  

On Wed, 2008-01-09 at 19:40 -0500, Alexandre Sunny Kovalenko wrote:

On Wed, 2008-01-09 at 12:35 -0500, Joe Marcus Clarke wrote: 
  

On Wed, 2008-01-09 at 10:53 -0500, Alexandre Sunny Kovalenko wrote:


I have seen recent commit WRT string collation in devel/glib20 by
marcus, so I have decided to check if there is an interest to fix SEGV
in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.
  

Any commits I have made in the area of UTF-8 are completely accidental.
I am not the UTF-8 guy.  Both bland and jylefort have expressed interest
in this.  Perhaps one of them will comment.


I hope so. Just in case, they would decide to, I have reduced the
situation to the small program below. I get 


GLib-CRITICAL **: g_convert: assertion `str != NULL' failed

and no core dump from this simple program, whereas Evolution manages to
pass NULL to strcoll further down in g_utf8_collate and get SEGV for its
pains.
  

That sounds like a no-no for Evolution to be dereferencing a NULL
pointer.  Hopefully they'd fix this to prevent the problem.



It's not Evolution, it is glib, specifically g_utf8_collate, which would
call strcoll(3) blindly on the return of g_utf8_normalize inside
gunicollate.c. And now, I can get core dumped out of this simple program
as well, merely by setting CHARSET=en_US.UTF-8 (I had it is ASCII in the
terminal window, which would trigger different path within
g_utf8_collate).

  

Conversely, if the answer still is Evolution should not have done
that, I will happily crawl back under my rock and keep my patch
locally.
  

I can't imagine you're alone in this.  But then again, any Cyrillic mail
that comes my way is always spam, so what do I know.



More importantly, it is UTF-8 spam -- in order to trigger this, you need
KOI8-R or CP1251, and in the sorted column to boot. I suspect that
Latin1 or ShiftJIS would do the trick too.

Now, how about this: would you be amenable to this Really Harmless(tm)
patch, which merely adds error checking along the lines used in the same
function, about dozen lines up ;)

--- glib/gunicollate.c.B 2008-01-09 20:48:25.0 -0500
+++ glib/gunicollate.c  2008-01-09 20:49:35.0 -0500
@@ -166,6 +166,9 @@
   str1_norm = g_utf8_normalize (str1, -1, G_NORMALIZE_ALL_COMPOSE);
   str2_norm = g_utf8_normalize (str2, -1, G_NORMALIZE_ALL_COMPOSE);
 
+  g_return_val_if_fail (str1_norm != NULL, 0);

+  g_return_val_if_fail (str2_norm != NULL, 0);
+
   if (g_get_charset (charset))
 {
   result = strcoll (str1_norm, str2_norm);

I can add it to your files/extra-patch-glib_gunicollate.c, or package 
it separately -- I really hate it when I start Evolution after portupgrade

to write some E-mails real quick, only to find out that I have forgotten
to patch glib... again.

  


___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: [patch] glib20, UTF-8 and string collation

2008-01-09 Thread Alexandre Sunny Kovalenko

On Thu, 2008-01-10 at 13:18 +0900, Alexander Nedotsukov wrote:
 Alexandre,
 
 The problem you exposed have its roots in Evo code. g_utf8_* stuff 
 defined to work on *utf-8* strings only and have undefined behaviour on 
 MBCS strings. It may sound stupid but crashes are allowed in this case 
 :-) Even we apply your latest patch the true problem solution will be 
 only postponed. We have to continue with Evo source. Find subject parser 
 part and ensure that it will be utf-8 encoded string at the end.
rant
While I see this as the noble goal, I fail to understand why asserts are
OK 10 lines above my latest patch, but not in this specific place. Nor
does this latest patch mask any issues in Evo -- you still get
Glib-CRITICAL assert. Hell, you even get assert without the patch if
your CHARSET is ASCII, but core dump if your CHARSET is xx_YY.UTF-8. If
we are talking noble goals here, how about some consistency in the error
handling?
/rant

On the more productive note: I have picked up more glib programming
today than I had before (or cared to) -- it's easy to improve when you
started from the veritable zero ;) However, it might not be sufficient
to do what needs to be done to Evolution. One thing you can help me
with, is to suggest glib function, I can feed arbitrary string of bytes
(either counted or zero-terminated) and it will tell me whether this is
valid UTF-8. g_print() apparently does this somehow, so there must be a
way.

As promised, I'll crawl back under my rock and wait for rainy weekend to
read some Evolution code.
 
 All the best,
 Alexander.
 
BTW: What happened to no top posting rule?
 Alexandre Sunny Kovalenko wrote:
  On Wed, 2008-01-09 at 20:16 -0500, Joe Marcus Clarke wrote: 

  On Wed, 2008-01-09 at 19:40 -0500, Alexandre Sunny Kovalenko wrote:
  
  On Wed, 2008-01-09 at 12:35 -0500, Joe Marcus Clarke wrote: 

  On Wed, 2008-01-09 at 10:53 -0500, Alexandre Sunny Kovalenko wrote:
  
  I have seen recent commit WRT string collation in devel/glib20 by
  marcus, so I have decided to check if there is an interest to fix SEGV
  in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.

  Any commits I have made in the area of UTF-8 are completely accidental.
  I am not the UTF-8 guy.  Both bland and jylefort have expressed interest
  in this.  Perhaps one of them will comment.
  
  I hope so. Just in case, they would decide to, I have reduced the
  situation to the small program below. I get 
 
  GLib-CRITICAL **: g_convert: assertion `str != NULL' failed
 
  and no core dump from this simple program, whereas Evolution manages to
  pass NULL to strcoll further down in g_utf8_collate and get SEGV for its
  pains.

  That sounds like a no-no for Evolution to be dereferencing a NULL
  pointer.  Hopefully they'd fix this to prevent the problem.
  
 
  It's not Evolution, it is glib, specifically g_utf8_collate, which would
  call strcoll(3) blindly on the return of g_utf8_normalize inside
  gunicollate.c. And now, I can get core dumped out of this simple program
  as well, merely by setting CHARSET=en_US.UTF-8 (I had it is ASCII in the
  terminal window, which would trigger different path within
  g_utf8_collate).
 

  Conversely, if the answer still is Evolution should not have done
  that, I will happily crawl back under my rock and keep my patch
  locally.

  I can't imagine you're alone in this.  But then again, any Cyrillic mail
  that comes my way is always spam, so what do I know.
  
 
  More importantly, it is UTF-8 spam -- in order to trigger this, you need
  KOI8-R or CP1251, and in the sorted column to boot. I suspect that
  Latin1 or ShiftJIS would do the trick too.
 
  Now, how about this: would you be amenable to this Really Harmless(tm)
  patch, which merely adds error checking along the lines used in the same
  function, about dozen lines up ;)
 
  --- glib/gunicollate.c.B 2008-01-09 20:48:25.0 -0500
  +++ glib/gunicollate.c  2008-01-09 20:49:35.0 -0500
  @@ -166,6 +166,9 @@
 str1_norm = g_utf8_normalize (str1, -1, G_NORMALIZE_ALL_COMPOSE);
 str2_norm = g_utf8_normalize (str2, -1, G_NORMALIZE_ALL_COMPOSE);
   
  +  g_return_val_if_fail (str1_norm != NULL, 0);
  +  g_return_val_if_fail (str2_norm != NULL, 0);
  +
 if (g_get_charset (charset))
   {
 result = strcoll (str1_norm, str2_norm);
 
  I can add it to your files/extra-patch-glib_gunicollate.c, or package 
  it separately -- I really hate it when I start Evolution after portupgrade
  to write some E-mails real quick, only to find out that I have forgotten
  to patch glib... again.
 

 

-- 
Alexandre Sunny Kovalenko (Олександр Коваленко)

___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: [patch] glib20, UTF-8 and string collation

2008-01-09 Thread Alexander Nedotsukov

Alexandre Sunny Kovalenko wrote:

On Thu, 2008-01-10 at 13:18 +0900, Alexander Nedotsukov wrote:
  

Alexandre,

The problem you exposed have its roots in Evo code. g_utf8_* stuff 
defined to work on *utf-8* strings only and have undefined behaviour on 
MBCS strings. It may sound stupid but crashes are allowed in this case 
:-) Even we apply your latest patch the true problem solution will be 
only postponed. We have to continue with Evo source. Find subject parser 
part and ensure that it will be utf-8 encoded string at the end.


rant
While I see this as the noble goal, I fail to understand why asserts are
OK 10 lines above my latest patch, but not in this specific place. Nor
does this latest patch mask any issues in Evo -- you still get
Glib-CRITICAL assert. Hell, you even get assert without the patch if
your CHARSET is ASCII, but core dump if your CHARSET is xx_YY.UTF-8. If
we are talking noble goals here, how about some consistency in the error
handling?
/rant
  
Those asserts does trivial arguments validation. Yours are slightly more 
than trivial which may be against existing glib practice. In any case I 
am against introducing such change locally. It lead to different 
execution paths in callers compared to other platforms. Also in a 
current form it suffer form potential memory leaks (guess where).
Please save your energy for debates with glib developers if you want to. 
Even you convince hundredths like me it still will not make a valid 
argument for them ;-)

On the more productive note: I have picked up more glib programming
today than I had before (or cared to) -- it's easy to improve when you
started from the veritable zero ;) However, it might not be sufficient
to do what needs to be done to Evolution. One thing you can help me
with, is to suggest glib function, I can feed arbitrary string of bytes
(either counted or zero-terminated) and it will tell me whether this is
valid UTF-8. g_print() apparently does this somehow, so there must be a
way.
  

See g_utf8_validate().

As promised, I'll crawl back under my rock and wait for rainy weekend to
read some Evolution code.
  

You better kick Evo authors into $some_painful_part_of_the_body :-)


All the best,
Alexander.



BTW: What happened to no top posting rule?
  

Alexandre Sunny Kovalenko wrote:

On Wed, 2008-01-09 at 20:16 -0500, Joe Marcus Clarke wrote: 
  
  

On Wed, 2008-01-09 at 19:40 -0500, Alexandre Sunny Kovalenko wrote:


On Wed, 2008-01-09 at 12:35 -0500, Joe Marcus Clarke wrote: 
  
  

On Wed, 2008-01-09 at 10:53 -0500, Alexandre Sunny Kovalenko wrote:



I have seen recent commit WRT string collation in devel/glib20 by
marcus, so I have decided to check if there is an interest to fix SEGV
in g_utf8_collate when it is given 8-bit non-UTF-8 string(s) to collate.
  
  

Any commits I have made in the area of UTF-8 are completely accidental.
I am not the UTF-8 guy.  Both bland and jylefort have expressed interest
in this.  Perhaps one of them will comment.



I hope so. Just in case, they would decide to, I have reduced the
situation to the small program below. I get 


GLib-CRITICAL **: g_convert: assertion `str != NULL' failed

and no core dump from this simple program, whereas Evolution manages to
pass NULL to strcoll further down in g_utf8_collate and get SEGV for its
pains.
  
  

That sounds like a no-no for Evolution to be dereferencing a NULL
pointer.  Hopefully they'd fix this to prevent the problem.



It's not Evolution, it is glib, specifically g_utf8_collate, which would
call strcoll(3) blindly on the return of g_utf8_normalize inside
gunicollate.c. And now, I can get core dumped out of this simple program
as well, merely by setting CHARSET=en_US.UTF-8 (I had it is ASCII in the
terminal window, which would trigger different path within
g_utf8_collate).

  
  

Conversely, if the answer still is Evolution should not have done
that, I will happily crawl back under my rock and keep my patch
locally.
  
  

I can't imagine you're alone in this.  But then again, any Cyrillic mail
that comes my way is always spam, so what do I know.



More importantly, it is UTF-8 spam -- in order to trigger this, you need
KOI8-R or CP1251, and in the sorted column to boot. I suspect that
Latin1 or ShiftJIS would do the trick too.

Now, how about this: would you be amenable to this Really Harmless(tm)
patch, which merely adds error checking along the lines used in the same
function, about dozen lines up ;)

--- glib/gunicollate.c.B 2008-01-09 20:48:25.0 -0500
+++ glib/gunicollate.c  2008-01-09 20:49:35.0 -0500
@@ -166,6 +166,9 @@
   str1_norm = g_utf8_normalize (str1, -1, G_NORMALIZE_ALL_COMPOSE);
   str2_norm = g_utf8_normalize (str2, -1, G_NORMALIZE_ALL_COMPOSE);
 
+  g_return_val_if_fail (str1_norm != NULL, 0);

+  g_return_val_if_fail (str2_norm != NULL, 0);
+
   if