Skip to content

Commit 9de7411

Browse files
Land #16704, Fix bad loop terminator checks and data checks in memcached_extractor.rb
2 parents a172fa0 + 5b6d953 commit 9de7411

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

modules/auxiliary/gather/memcached_extractor.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,13 @@ def localhost?(ip)
5454
def enumerate_keys
5555
keys = []
5656
enumerate_slab_ids.each do |sid|
57+
sock.send("stats cachedump #{sid} #{max_keys}\r\n", 0)
5758
loop do
58-
sock.send("stats cachedump #{sid} #{max_keys}\r\n", 0)
5959
data = sock.recv(4096)
60-
break if !data || data.length == 0 || data == "END\r\n"
60+
break if !data || data.length == 0 || data == "END\r\n" || data == "ERROR\r\n"
6161
matches = data.scan(/^ITEM (?<key>.*) \[/)
62-
keys = keys + matches.flatten! if matches
62+
break if matches.empty?
63+
keys = keys + matches.flatten!
6364
break if data =~ /^END/
6465
end
6566
end
@@ -86,9 +87,10 @@ def enumerate_keys_lru
8687
sock.send("lru_crawler metadump all\r\n", 0)
8788
loop do
8889
data = sock.recv(4096)
89-
break if !data || data.length == 0 || data == "END\r\n"
90+
break if !data || data.length == 0 || data == "END\r\n" || data == "ERROR\r\n"
9091
matches = data.scan(/^key=(?<key>.*) exp=/)
91-
keys = keys + matches.flatten! if matches
92+
break if matches.empty?
93+
keys = keys + matches.flatten!
9294
break if data =~ /^END/
9395
data = ''
9496
end

0 commit comments

Comments
 (0)