diff --git a/dlls/icmp/icmp_main.c b/dlls/icmp/icmp_main.c
index 9a2721d6c071633f1632216f5367bed1afe8516e..0627eef72e8009624ede23a3768fff50a34e530c 100644
--- a/dlls/icmp/icmp_main.c
+++ b/dlls/icmp/icmp_main.c
@@ -182,6 +182,11 @@ HANDLE WINAPI IcmpCreateFile(VOID)
 BOOL WINAPI IcmpCloseHandle(HANDLE  IcmpHandle)
 {
     icmp_t* icp=(icmp_t*)IcmpHandle;
+    if (IcmpHandle==INVALID_HANDLE_VALUE) {
+        /* FIXME: in fact win98 seems to ignore the handle value !!! */
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+    }
 
     ISOCK_shutdown(icp->sid,2);
     free(icp);
@@ -217,6 +222,12 @@ DWORD WINAPI IcmpSendEcho(
     unsigned short id,seq,cksum;
     int res;
 
+    if (IcmpHandle==INVALID_HANDLE_VALUE) {
+        /* FIXME: in fact win98 seems to ignore the handle value !!! */
+        SetLastError(ERROR_INVALID_HANDLE);
+        return 0;
+    }
+
     if (ReplySize<sizeof(ICMP_ECHO_REPLY)+ICMP_MINLEN) {
         SetLastError(IP_BUF_TOO_SMALL);
         return 0;