[Lldb-commits] [PATCH] D71825: [lldb/Lua] Support loading Lua modules.

Pavel Labath via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Jan 7 01:32:32 PST 2020


labath added a comment.

Sorry for the delay, I was OOO and I'm still processing the backlog...



================
Comment at: lldb/source/Plugins/ScriptInterpreter/Lua/Lua.cpp:39
+
+  ConstString module_name = file.GetFileNameStrippingExtension();
+  if (!module_name) {
----------------
I guess you also ought to validate the extension here. Otherwise "import foo.perl" will end up importing "foo.lua".


================
Comment at: lldb/source/Plugins/ScriptInterpreter/Lua/Lua.cpp:49
+    if (llvm::Error e =
+            Run(llvm::formatv("package.path = package.path .. \";{0}\"",
+                              file.GetCString())
----------------
Embedding the file name this way seems unfortunate (`"; os.execute("rm -rf /");`), and it probably will not work at all on windows because of all the backslashes. Lua formatting function has a `%q` format to format strings safely. Accessing that from C is a bit tricky, but we can make a utility function for that.


================
Comment at: lldb/source/Plugins/ScriptInterpreter/Lua/Lua.cpp:58
+  // Reload the module if requested.
+  if (llvm::Error e = Run(
+          llvm::formatv("package.loaded.{0} = nil", module_name.GetStringRef())
----------------
Here we probably ought to validate that `module_name` is a valid lua identifier.


================
Comment at: lldb/source/Plugins/ScriptInterpreter/Lua/Lua.cpp:66
+  return Run(
+      llvm::formatv("{0} = require \"{0}\"", module_name.GetStringRef()).str());
+}
----------------
Is there any advantage to using `require` here? It doesn't seems like it brings much into the game, as its main purpose seems to be to _find_ the module, but here we know exactly where the module is. OTOH, using it has a lot of downsides (needing to quote/validate all strings, mess with the `package.loaded` variable, potentially loading the wrong file, etc).

Would it be possible to just `luaL_loadfile` the file and then assign the result of its evaluation to the appropriate variable manually?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71825/new/

https://reviews.llvm.org/D71825





More information about the lldb-commits mailing list