android: Check returns for obj and classes are not NULL. Document API levels for various Android functions and objects used. (#166)

pull/167/head
John Schember 7 years ago committed by Brad House
parent e5a352926a
commit 482052aa77
  1. 25
      ares_android.c

@ -182,30 +182,49 @@ char **ares_get_android_server_list(size_t max_servers,
ares_library_init_android.
*/
/* ConnectivityManager in API 1. */
obj_cls = jni_get_class(env, "android/net/ConnectivityManager");
if (obj_cls == NULL)
goto done;
/* ConnectivityManager.getActiveNetwork in API 23. */
obj_mid = jni_get_method_id(env, obj_cls, "getActiveNetwork",
"()Landroid/net/Network;");
if (obj_mid == NULL)
goto done;
active_network = (*env)->CallObjectMethod(env, android_connectivity_manager,
obj_mid);
if (active_network == NULL)
goto done;
/* ConnectivityManager.getLinkProperties in API 21. */
obj_mid = jni_get_method_id(env, obj_cls, "getLinkProperties",
"(Landroid/net/Network;)Landroid/net/LinkProperties;");
if (obj_mid == NULL)
goto done;
link_properties = (*env)->CallObjectMethod(env, android_connectivity_manager,
obj_mid, active_network);
if (link_properties == NULL)
goto done;
/* LinkProperties in API 21. */
obj_cls = jni_get_class(env, "android/net/LinkProperties");
if (obj_cls == NULL)
goto done;
/* getDnsServers in API 21. */
obj_mid = jni_get_method_id(env, obj_cls, "getDnsServers",
"()Ljava/util/List;");
if (obj_mid == NULL)
goto done;
server_list = (*env)->CallObjectMethod(env, link_properties, obj_mid);
if (server_list == NULL)
goto done;
list_cls = jni_get_class(env, "java/util/List");
if (list_cls == NULL)
goto done;
list_mid = jni_get_method_id(env, list_cls, "size", "()I");
if (list_mid == NULL)
goto done;
nserv = (*env)->CallIntMethod(env, server_list, list_mid);
if (nserv > (jint)max_servers)
nserv = (jint)max_servers;
@ -213,10 +232,16 @@ char **ares_get_android_server_list(size_t max_servers,
goto done;
*num_servers = (size_t)nserv;
list_mid = jni_get_method_id(env, list_cls, "get", "(I)Ljava/lang/Object;");
if (list_mid == NULL)
goto done;
obj_cls = jni_get_class(env, "java/net/InetAddress");
if (obj_cls == NULL)
goto done;
obj_mid = jni_get_method_id(env, obj_cls, "getHostAddress",
"()Ljava/lang/String;");
if (obj_mid == NULL)
goto done;
dns_list = ares_malloc(sizeof(*dns_list)*(*num_servers));
for (i=0; i<*num_servers; i++)
{

Loading…
Cancel
Save