diff options
| author | David 'Digit' Turner <digit@google.com> | 2010-03-02 18:05:23 -0800 |
|---|---|---|
| committer | David 'Digit' Turner <digit@google.com> | 2010-03-17 11:02:08 -0700 |
| commit | 1f4d95296acf34a93128332441782a80c10845b4 (patch) | |
| tree | 2b8cf38a4716b2c622c564d3a7da82022cdaf9c9 /run-as/package.h | |
| parent | 5fc070be8593f39f5140ab63fb6f5eccceb1dc83 (diff) | |
| download | core-1f4d95296acf34a93128332441782a80c10845b4.tar.gz core-1f4d95296acf34a93128332441782a80c10845b4.tar.bz2 core-1f4d95296acf34a93128332441782a80c10845b4.zip | |
Add 'run-as' command implementation as set-uid program.
Typical usage is 'run-as <package-name> <command>' to run <command>
in the data directory, and the user id, of <package-name> if, and only
if <package-name> is the name of an installed and debuggable application.
This relies on the /data/system/packages.list file generated by the
PackageManager service.
BEWARE: This is intended to be available on production devices !
Diffstat (limited to 'run-as/package.h')
| -rw-r--r-- | run-as/package.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/run-as/package.h b/run-as/package.h new file mode 100644 index 000000000..852af0632 --- /dev/null +++ b/run-as/package.h @@ -0,0 +1,41 @@ +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +#ifndef RUN_AS_PACKAGE_H +#define RUN_AS_PACKAGE_H + +#include <limits.h> +#include <sys/types.h> + +typedef enum { + PACKAGE_IS_DEBUGGABLE = 0, + PACKAGE_IS_NOT_DEBUGGABLE, + PACKAGE_IS_UNKNOWN, +} PackageStatus; + +typedef struct { + uid_t uid; + char isDebuggable; + char dataDir[PATH_MAX]; +} PackageInfo; + +/* see documentation in package.c for these functiosn */ + +extern int get_package_info(const char* packageName, PackageInfo* info); + +extern int check_data_path(const char* dataDir, uid_t uid); + +#endif /* RUN_AS_PACKAGE_H */ |
