* parse.cxx: add privilege check for @kderef and @kregister
* testsuite/parseko/at_kderef.stp: New file to test privilege check
* testsuite/parseko/at_kregister.stp: New file to test privilege check
* testsuite/parseok/at_kderef.stp: New file to test privilege check
* testsuite/parseok/at_kregister.stp: New file to test privilege check
int64_t regno;
treg->tok = t;
treg->userspace_p = (t->content[1] == 'u');
+ if (! treg->userspace_p && ! privileged)
+ throw PARSE_ERROR (_("using @kregister operator not permitted; need stap -g"),
+ false /* don't skip tokens for parse resumption */);
expect_op("(");
expect_number(regno);
treg->regno = regno;
int64_t size;
tderef->tok = t;
tderef->userspace_p = (t->content[1] == 'u');
+ if (! tderef->userspace_p && ! privileged)
+ throw PARSE_ERROR (_("using @kderef operator not permitted; need stap -g"),
+ false /* don't skip tokens for parse resumption */);
expect_op("(");
expect_number(size);
tderef->size = size;
--- /dev/null
+#! stap -p1
+
+probe oneshot { @kderef(4, ptr) }
--- /dev/null
+#! stap -p1
+
+probe oneshot { @kregister(0) }
--- /dev/null
+#! stap -gp1
+
+probe oneshot { @kderef(4, ptr) }
--- /dev/null
+#! stap -gp1
+
+probe oneshot { @kregister(0) }