# HG changeset patch # User Paul Aurich # Date 1306106050 25200 # Node ID 7f789266b74124d48e2afc537b815f76b6f3cf8d # Parent 0a4ce2086a88e237e5d99e19d68b5be8db78a17b util.encodings: Check return values before proceeding diff -r 0a4ce2086a88 -r 7f789266b741 util-src/encodings.c --- a/util-src/encodings.c Sun May 22 15:40:16 2011 -0700 +++ b/util-src/encodings.c Sun May 22 16:14:10 2011 -0700 @@ -145,13 +145,17 @@ return 1; } u_strFromUTF8(unprepped, 1024, &unprepped_len, input, input_len, &err); + if (U_FAILURE(err)) { + luah_pushnil(L); + return 1; + } prepped_len = usprep_prepare(profile, unprepped, unprepped_len, prepped, 1024, 0, NULL, &err); if (U_FAILURE(err)) { lua_pushnil(L); return 1; } else { u_strToUTF8(output, 1024, &output_len, prepped, prepped_len, &err); - if(output_len < 1024) + if (U_SUCCESS(err) && output_len < 1024) lua_pushlstring(L, output, output_len); else lua_pushnil(L); @@ -258,13 +262,18 @@ char output[1024]; u_strFromUTF8(ustr, 1024, &ulen, s, len, &err); + if (U_FAILURE(err)) { + lua_pushnil(L); + return 1; + } + dest_len = uidna_IDNToASCII(ustr, ulen, dest, 1024, UIDNA_USE_STD3_RULES, NULL, &err); if (U_FAILURE(err)) { lua_pushnil(L); return 1; } else { u_strToUTF8(output, 1024, &output_len, dest, dest_len, &err); - if(output_len < 1024) + if (U_SUCCESS(err) && output_len < 1024) lua_pushlstring(L, output, output_len); else lua_pushnil(L); @@ -283,13 +292,18 @@ char output[1024]; u_strFromUTF8(ustr, 1024, &ulen, s, len, &err); + if (U_FAILURE(err)) { + lua_pushnil(L); + return 1; + } + dest_len = uidna_IDNToUnicode(ustr, ulen, dest, 1024, UIDNA_USE_STD3_RULES, NULL, &err); if (U_FAILURE(err)) { lua_pushnil(L); return 1; } else { u_strToUTF8(output, 1024, &output_len, dest, dest_len, &err); - if(output_len < 1024) + if (U_SUCCESS(err) && output_len < 1024) lua_pushlstring(L, output, output_len); else lua_pushnil(L);