{
        int type = 0;
 
-       if (argc != 2)
+       if (argc != 3)
                return CMD_RET_USAGE;
 
-       if (strcasecmp(argv[1], "key"))
+       if (!strcasecmp(argv[1], "key"))
                type = TPM_RT_KEY;
-       else if (strcasecmp(argv[1], "auth"))
+       else if (!strcasecmp(argv[1], "auth"))
                type = TPM_RT_AUTH;
-       else if (strcasecmp(argv[1], "hash"))
+       else if (!strcasecmp(argv[1], "hash"))
                type = TPM_RT_HASH;
-       else if (strcasecmp(argv[1], "trans"))
+       else if (!strcasecmp(argv[1], "trans"))
                type = TPM_RT_TRANS;
-       else if (strcasecmp(argv[1], "context"))
+       else if (!strcasecmp(argv[1], "context"))
                type = TPM_RT_CONTEXT;
-       else if (strcasecmp(argv[1], "counter"))
+       else if (!strcasecmp(argv[1], "counter"))
                type = TPM_RT_COUNTER;
-       else if (strcasecmp(argv[1], "delegate"))
+       else if (!strcasecmp(argv[1], "delegate"))
                type = TPM_RT_DELEGATE;
-       else if (strcasecmp(argv[1], "daa_tpm"))
+       else if (!strcasecmp(argv[1], "daa_tpm"))
                type = TPM_RT_DAA_TPM;
-       else if (strcasecmp(argv[1], "daa_v0"))
+       else if (!strcasecmp(argv[1], "daa_v0"))
                type = TPM_RT_DAA_V0;
-       else if (strcasecmp(argv[1], "daa_v1"))
+       else if (!strcasecmp(argv[1], "daa_v1"))
                type = TPM_RT_DAA_V1;
 
-       if (strcasecmp(argv[2], "all")) {
+       if (!type) {
+               printf("Resource type %s unknown.\n", argv[1]);
+               return -1;
+       }
+
+       if (!strcasecmp(argv[2], "all")) {
                uint16_t res_count;
                uint8_t buf[288];
                uint8_t *ptr;
                /* fetch list of already loaded resources in the TPM */
                err = tpm_get_capability(TPM_CAP_HANDLE, type, buf,
                                         sizeof(buf));
-               if (err)
+               if (err) {
+                       printf("tpm_get_capability returned error %d.\n", err);
                        return -1;
+               }
                res_count = get_unaligned_be16(buf);
                ptr = buf + 2;
                for (i = 0; i < res_count; ++i, ptr += 4)
        } else {
                uint32_t handle = simple_strtoul(argv[2], NULL, 0);
 
-               if (!handle)
+               if (!handle) {
+                       printf("Illegal resource handle %s\n", argv[2]);
                        return -1;
+               }
                tpm_flush_specific(cpu_to_be32(handle), type);
        }