@@ -141,54 +141,39 @@ int renamepkg(const char *oldpkgname, const char *newpkgname)
141141 return 0 ;
142142}
143143
144- int fix_uid (const char * pkgname , uid_t uid , uid_t userId )
144+ int fix_uid (const char * pkgname , uid_t uid , gid_t gid )
145145{
146146 char pkgdir [PKG_PATH_MAX ];
147147 struct stat s ;
148148 int rc = 0 ;
149149
150- if (uid < AID_SYSTEM ) {
151- ALOGE ("invalid uid: %d\n" , uid );
150+ if (( uid < AID_SYSTEM ) || ( gid < AID_SYSTEM ) ) {
151+ ALOGE ("invalid uid/gid : %d %d \n" , uid , gid );
152152 return -1 ;
153153 }
154154
155- if (create_pkg_path (pkgdir , pkgname , PKG_DIR_POSTFIX , userId )) {
155+ if (create_pkg_path (pkgdir , pkgname , PKG_DIR_POSTFIX , 0 )) {
156156 ALOGE ("cannot create package path\n" );
157157 return -1 ;
158158 }
159159
160160 if (stat (pkgdir , & s ) < 0 ) return -1 ;
161161
162- if (((s .st_uid != 0 ) && (s .st_uid != AID_INSTALL ))
163- || ((s .st_gid != 0 ) && (s .st_gid != AID_INSTALL ))) {
164- ALOGE ("fixing uid of pkg not owned by install or root: %s %lu %lu\n" , pkgdir , s .st_uid ,
165- s .st_gid );
166- return -1 ;
167- }
168-
169- if (chown (pkgdir , AID_INSTALL , AID_INSTALL ) < 0 ) {
170- ALOGE ("cannot chown dir '%s': %s\n" , pkgdir , strerror (errno ));
171- unlink (pkgdir );
162+ if (s .st_uid != 0 || s .st_gid != 0 ) {
163+ ALOGE ("fixing uid of non-root pkg: %s %lu %lu\n" , pkgdir , s .st_uid , s .st_gid );
172164 return -1 ;
173165 }
174166
175167 if (chmod (pkgdir , 0751 ) < 0 ) {
176168 ALOGE ("cannot chmod dir '%s': %s\n" , pkgdir , strerror (errno ));
177169 unlink (pkgdir );
178- return -1 ;
170+ return - errno ;
179171 }
180- if (chown (pkgdir , uid , uid ) < 0 ) {
172+ if (chown (pkgdir , uid , gid ) < 0 ) {
181173 ALOGE ("cannot chown dir '%s': %s\n" , pkgdir , strerror (errno ));
182174 unlink (pkgdir );
183- return -1 ;
184- }
185- #ifdef HAVE_SELINUX
186- if (selinux_android_setfilecon (pkgdir , pkgname , uid ) < 0 ) {
187- ALOGE ("cannot setfilecon dir '%s': %s\n" , pkgdir , strerror (errno ));
188- unlink (pkgdir );
189- return -1 ;
175+ return - errno ;
190176 }
191- #endif
192177
193178 return 0 ;
194179}
0 commit comments