Next>> Scroll to Bottom
Stuff goes here
L1[10:18:41]
<boiler>
%lua fun=setmetatable({},{tostring=function(t) error(t) end})
print(fun) return fun
L2[10:18:41] <MichiBot> main:1: unexpected
symbol near char(29)
L3[10:18:51]
<boiler>
%lua fun=setmetatable({},{tostring=function(t) error(t) end})
L4[10:18:51] <MichiBot> main:1: unexpected
symbol near char(29)
L5[10:19:39]
<boiler>
%lua fun=setmetatable({},{["tostring"]=function(t)
error(t) end } )
L6[10:19:47]
<boiler>
%lua fun=setmetatable({},{["tostring"]=function(t)
error(t) end } ) return fun
L7[10:19:47] <MichiBot> table:
0x7ff9fc06d560
L8[10:20:02]
<boiler>
%lua fun=setmetatable({},{[tostring]=function(t) error(t) end }
)
L9[10:20:02] <MichiBot> main:1: unexpected
symbol near char(29)
L10[10:20:48]
<boiler>
%lua a={} a.tostring=function(t) error(t) end
fun=setmetatable({},a) return fun
L11[10:20:48] <MichiBot> main:1:
<name> expected near char(29)
L12[10:21:28]
<boiler>
%lua a={} a.["tostring"]=function(t) error(t) end
fun=setmetatable({},a) return fun
L13[10:21:29] <MichiBot> main:1:
<name> expected near '['
L14[10:21:37]
<boiler>
%lua a={} a["tostring"]=function(t) error(t) end
fun=setmetatable({},a) return fun
L15[10:21:37] <MichiBot> table:
0x7ffa0c066bf0
L16[10:21:50]
<boiler>
%lua a={} a["tostring"]=function(t) error(t) end
fun=setmetatable({},a) print(fun)
L17[10:21:50] <MichiBot> table:
0x7ffa6c068d10
L18[10:21:56]
<boiler>
how
L19[10:22:34]
<boiler> is
this lua 5.1?
L20[10:23:04]
<boiler> is
this <lua 5.1? [Edited]
L21[10:30:09]
<boiler>
%lua a={} a["tostring"]=function(t) return(t) end
fun=setmetatable({},a) print(fun)
L22[10:30:10] <MichiBot> table:
0x7ffa240599b0
L23[10:40:04]
<Saghetti>
%lua _VERSION
L24[10:40:04] <MichiBot> Lua 5.2
L25[10:40:12]
<Saghetti>
@boiler
L26[10:40:45]
<boiler>
then it somehow detects when fucky metatables are in play and
doesn't let them ruin everything
L27[10:40:58]
<Saghetti>
%lua setfenv
L28[10:40:58] <MichiBot> nil
L29[10:41:19]
<boiler>
%lua a={} a["
metatable"]={}
a["tostring"]=function(t) return(t) end
fun=setmetatable({},a) print(fun)
L30[10:41:19] <MichiBot> table:
0x7ffa4803a4f0
L31[10:41:29]
<boiler>
aaaa discord stahp
L32[10:42:02]
<boiler>
%lua a={} fuckingshitdiscordformatting = ""
a[fuckingshitdiscordformatting.."metatable"]={}
a[fuckingshitdiscordformatting.."tostring"]=function(t)
return(t) end fun=setmetatable({},a) print(fun)
L33[10:42:02] <MichiBot> table:
0x7ffa00075490
L34[10:44:59]
<boiler>
%lua a={} us= "" a[us.."metatable"]=function()
return nil end a[us.."tostring"]=function(t) return(t)
end fun=setmetatable({},a) print(fun)
L35[10:44:59] <MichiBot> table:
0x7ffa14061c20
L36[10:45:08]
<boiler>
%lua a={} us= "" a[us.."metatable"]=function()
return nil end a[us.."tostring"]=function(t) error(t) end
fun=setmetatable({},a) print(fun)
L37[10:45:08] <MichiBot> table:
0x7ffa0c0688c0
L38[10:45:32]
<boiler>
%lua a={} us= "" a[us.."metatable"]=nil
a[us.."tostring"]=function(t) return(t) end
fun=setmetatable({},a) print(fun)
L39[10:45:32] <MichiBot> table:
0x7ffa0c067570
L40[10:45:57] <AmandaC> %lua
print(setmetatable({}, { __tostring = function(t) error(t) end
}))
L41[10:45:57] <MichiBot> table:
0x7ffa405b0840
L42[10:47:20]
<boiler> how
is it tostring()ing it if the tostring metamethod ALWAYS
errors?
L43[10:47:49] <AmandaC> the default table
tostring method, ofc
L44[10:48:28]
<boiler>
%lua print(setmetatable({}, {\
metatable=nil,tostring =
function(t) error(t) end }))
L45[10:48:28] <MichiBot> main:1: unexpected
symbol near '\'
L46[10:49:03]
<boiler>
%lua print(setmetatable({}, {
metatable=nil,tostring =
function(t) error(t) end }))
L47[10:49:03] <MichiBot> main:1: unexpected
symbol near char(31)
L48[10:49:16]
<boiler>
discord formatting is a pain
L49[10:49:50]
<boiler>
%lua us="" print(setmetatable({},
{[us.."metatable"]=nil,[us.."tostring"] =
function(t) error(t) end }))
L50[10:49:50] <MichiBot> table:
0x7ffa28040800
L51[10:50:46] <AmandaC> That's not doing
what you think it is
L52[10:51:08] <AmandaC> Try
`("_"):rep(2)`
L53[10:51:12] <AmandaC> or get on IRC like
a winner
L54[10:53:15]
<boiler>
%lua us=("_"):rep(2) print(setmetatable({},
{[us.."metatable"]=nil,[us.."tostring"] =
function(t) error(t) end }))
L55[10:53:15] <MichiBot> table:
0x7ff9f0084c00
L56[10:54:15] <AmandaC> the C code for
tostring probably tries the metamethod, if it fails,c alls the C
default
L57[10:55:27]
<boiler>
%lua us=("_"):rep(2) print(setmetatable({},
{[us.."metatable"]=nil,[us.."tostring"] =
function(t) return(t) end }))
L58[10:55:27] <MichiBot> table:
0x7ffa583581f0
L59[10:56:16] <AmandaC> plus I'm not sure
if C print calls tostring
L60[10:56:39] <AmandaC> or whatever
MichiBot replaces it with
L61[10:58:35]
<boiler>
either way, it's not breaking, so you win
L62[10:58:42]
<boiler>
either way, it's not breaking, so you win mimiru [Edited]
L64[11:00:03] <AmandaC> which would be
caught by michibot and reported as such
L65[11:02:14]
<boiler> try
the return thing
L66[11:02:40]
<boiler>
instead of error(t) do return(t). i'm too lazy to fix my lua
install atm
L67[11:04:23] <AmandaC> "__tostring
must return a string"
L68[11:04:52]
<boiler> oh,
so that's pretty foolproof.
L69[11:04:54] <AmandaC> regardless, if you
did manage to break MichiBot, all it'd earn you is a ban
L70[11:05:38]
<boiler>
breaking programs is fun though