~ubuntu-branches/ubuntu/saucy/suricata/saucy-proposed

« back to all changes in this revision

Viewing changes to src/app-layer-smb.c

  • Committer: Bazaar Package Importer
  • Author(s): Pierre Chifflier
  • Date: 2010-08-11 14:45:14 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20100811144514-zgibko2uougimv49
Tags: 1.0.1-1
* Imported Upstream version 1.0.1 (Closes: #591559)
* Bump Standards version to 3.9.1
* Create /var/log/suricata (Closes: #590861)

Show diffs side-by-side

added added

removed removed

Lines of Context:
585
585
        if (parsed == -1) {
586
586
            SCReturnInt(-1);
587
587
        } else {
 
588
            sstate->dcerpc_present = 1;
588
589
            sstate->bytesprocessed += parsed;
589
590
            sstate->bytecount.bytecountleft -= parsed;
590
591
            input_len -= parsed;
726
727
        }
727
728
 
728
729
        if (sstate->andx.datalength && input_len) {
 
730
                /* Uncomment the next line to help debug DCERPC over SMB */
 
731
                //hexdump(f, input + parsed, input_len);
729
732
            sres = DataParser(sstate, pstate, input + parsed, input_len, output);
730
733
            if (sres != -1) {
731
734
                parsed += (uint32_t)sres;
1033
1036
            parsed += retval;
1034
1037
            input_len -= retval;
1035
1038
            SCLogDebug(
1036
 
                    "[1] NBSS Header (%u/%u) Type 0x%02x Length 0x%04x parsed %"PRIu64" input_len %u",
 
1039
                    "[1] NBSS Header (%u/%u) Type 0x%02x Length 0x%04x parsed %"PRIu64" input_len %u\n",
1037
1040
                    sstate->bytesprocessed, NBSS_HDR_LEN, sstate->nbss.type,
1038
1041
                    sstate->nbss.length, parsed, input_len);
1039
1042
        } else if (input_len) {
1057
1060
                    parsed += hdrretval;
1058
1061
                    input_len -= hdrretval;
1059
1062
                    SCLogDebug(
1060
 
                            "[2] SMB Header (%u/%u) Command 0x%02x parsed %"PRIu64" input_len %u",
 
1063
                            "[2] SMB Header (%u/%u) Command 0x%02x parsed %"PRIu64" input_len %u\n",
1061
1064
                            sstate->bytesprocessed, NBSS_HDR_LEN + SMB_HDR_LEN,
1062
1065
                            sstate->smb.command, parsed, input_len);
1063
1066
                }
1072
1075
                        parsed += retval;
1073
1076
                        input_len -= retval;
1074
1077
                    } else if (input_len) {
1075
 
                        SCLogDebug("Error parsing SMB Word Count");
 
1078
                        SCLogDebug("Error parsing SMB Word Count\n");
1076
1079
                        sstate->bytesprocessed = 0;
1077
1080
                        SCReturnInt(0);
1078
1081
                    }
1079
 
                    SCLogDebug("[3] WordCount (%u/%u) WordCount %u parsed %"PRIu64" input_len %u",
 
1082
                    SCLogDebug("[3] WordCount (%u/%u) WordCount %u parsed %"PRIu64" input_len %u\n",
1080
1083
                            sstate->bytesprocessed, NBSS_HDR_LEN + SMB_HDR_LEN + 1,
1081
1084
                            sstate->wordcount.wordcount,
1082
1085
                            parsed, input_len);
1091
1094
                        parsed += retval;
1092
1095
                        input_len -= retval;
1093
1096
                    } else if (input_len) {
1094
 
                        SCLogDebug("Error parsing SMB Word Count Data retval %"PRIu64" input_len %u", retval, input_len);
 
1097
                        SCLogDebug("Error parsing SMB Word Count Data retval %"PRIu64" input_len %u\n", retval, input_len);
1095
1098
                        sstate->bytesprocessed = 0;
1096
1099
                        SCReturnInt(0);
1097
1100
                    }
1098
 
                    SCLogDebug("[4] Parsing WordCount (%u/%u) WordCount %u parsed %"PRIu64" input_len %u",
 
1101
                    SCLogDebug("[4] Parsing WordCount (%u/%u) WordCount %u parsed %"PRIu64" input_len %u\n",
1099
1102
                                                sstate->bytesprocessed, NBSS_HDR_LEN + SMB_HDR_LEN + 1 + sstate->wordcount.wordcount,
1100
1103
                                        sstate->wordcount.wordcount,
1101
1104
                                        parsed, input_len);
1111
1114
                        parsed += retval;
1112
1115
                        input_len -= retval;
1113
1116
                    } else if (input_len) {
1114
 
                        SCLogDebug("Error parsing SMB Byte Count");
 
1117
                        SCLogDebug("Error parsing SMB Byte Count\n");
1115
1118
                        sstate->bytesprocessed = 0;
1116
1119
                        SCReturnInt(0);
1117
1120
                    }
1118
 
                    SCLogDebug("[5] ByteCount (%u/%u) ByteCount %u parsed %"PRIu64" input_len %u",
 
1121
                    SCLogDebug("[5] ByteCount (%u/%u) ByteCount %u parsed %"PRIu64" input_len %u\n",
1119
1122
                                                sstate->bytesprocessed, NBSS_HDR_LEN + SMB_HDR_LEN + 3,
1120
1123
                                           sstate->bytecount.bytecount,
1121
1124
                                           parsed, input_len);
 
1125
 
 
1126
                    if (sstate->bytecount.bytecount == 0) {
 
1127
                        sstate->bytesprocessed = 0;
 
1128
                        input_len = 0;
 
1129
                    }
1122
1130
                }
1123
1131
 
1124
1132
                while (input_len && (sstate->bytesprocessed >= NBSS_HDR_LEN
1132
1140
                        parsed += retval;
1133
1141
                        input_len -= retval;
1134
1142
                    } else if (input_len) {
1135
 
                        SCLogDebug("Error parsing SMB Byte Count Data");
 
1143
                        SCLogDebug("Error parsing SMB Byte Count Data\n");
1136
1144
                        sstate->bytesprocessed = 0;
1137
1145
                        SCReturnInt(0);
1138
1146
                    }
1139
 
                    SCLogDebug("[6] Parsing ByteCount (%u/%u) ByteCount %u parsed %"PRIu64" input_len %u",
 
1147
                    SCLogDebug("[6] Parsing ByteCount (%u/%u) ByteCount %u parsed %"PRIu64" input_len %u\n",
1140
1148
                                                                        sstate->bytesprocessed, NBSS_HDR_LEN + SMB_HDR_LEN + 1 + sstate->wordcount.wordcount + 2 + sstate->bytecount.bytecount,
1141
1149
                                                                          sstate->bytecount.bytecount, parsed, input_len);
1142
1150
                }