Bug 141854 - kpart library opening fails if cwd is unreadable
Summary: kpart library opening fails if cwd is unreadable
Status: RESOLVED WORKSFORME
Alias: None
Product: kdelibs
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: kdelibs bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-02-18 10:56 UTC by Roberto Ragusa
Modified: 2007-11-16 23:03 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Roberto Ragusa 2007-02-18 10:56:53 UTC
Version:            (using KDE KDE 3.5.6)
Installed from:    Unlisted Binary Package
Compiler:          gcc 4.1.1 fedora core 6
OS:                Linux

If the current working directory is unreadable (no permission),
loading kpart libraries fails and applications don't start.

I can reproduce it in this way:
1) open a konsole (assume we are user "aaa")
2) su bbb (we are now user "bbb" but our cwd is /home/aaa, which has perm=700)
3) try to run kpdf; it fails (can't load kpart library)
4) cd (we are now user "bbb" and our cwd is "home/bbb")
5) try to run kpdf; it works

Same problem with konqueror instead of kpdf (more kpart libs fail).
It is not related to X authorization, of course (xhost, xauth is ok as 5) works ).

My scenario was: I run Firefox as a different user and tried setting it to open pdf
files with kpdf; kpdf doesn't start because kdesu didn't change the firefox cwd.

This is the strace related to the scenario 3) (loading fails):
  read(9, "<!DOCTYPE kpartgui SYSTEM \"kpart"..., 4096) = 594
  fstat64(9, {st_mode=S_IFREG|0644, st_size=594, ...}) = 0
  fstat64(9, {st_mode=S_IFREG|0644, st_size=594, ...}) = 0
  close(9)                                = 0
  munmap(0xb7d03000, 4096)                = 0
  stat64("libkpdfpart", 0xbf900b64)       = -1 EACCES (Permission denied) <<<<<<<========= cwd is unreadable, we take the failure path ============
  open("/lib/libkpdfpart", O_RDONLY)      = -1 ENOENT (No such file or directory)
  open("/usr/share/locale/locale.alias", O_RDONLY) = 9
  fstat64(9, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0
  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d03000
  read(9, "# Locale name alias data base.\n#"..., 4096) = 2528
  read(9, "", 4096)                       = 0
  close(9)                                = 0
  munmap(0xb7d03000, 4096)                = 0
  open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)

This is the strace related to the scenario 5) (loading ok):

  read(9, "<!DOCTYPE kpartgui SYSTEM \"kpart"..., 4096) = 594
  fstat64(9, {st_mode=S_IFREG|0644, st_size=594, ...}) = 0
  fstat64(9, {st_mode=S_IFREG|0644, st_size=594, ...}) = 0
  close(9)                                = 0
  munmap(0xb7caa000, 4096)                = 0
  stat64("libkpdfpart", 0xbfbe7e34)       = -1 ENOENT (No such file or directory) <<<<<<<========= cwd doesn't have the file, we try other paths and succeed with /usr/lib/kde3/ ============
  lstat64("/home", {st_mode=S_IFDIR|0755, st_size=336, ...}) = 0
  lstat64("/home/bbb", {st_mode=S_IFDIR|0700, st_size=4552, ...}) = 0
  lstat64("/home/bbb/.kde", {st_mode=S_IFDIR|0755, st_size=344, ...}) = 0
  lstat64("/home/bbb/.kde/lib", 0xbfbe6d2c) = -1 ENOENT (No such file or directory)
  lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=480, ...}) = 0
  lstat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=126848, ...}) = 0
  lstat64("/usr/lib/kde3", {st_mode=S_IFDIR|0755, st_size=74752, ...}) = 0
  access("/usr/lib/kde3", F_OK)           = 0
  lstat64("/usr/lib/kde3", {st_mode=S_IFDIR|0755, st_size=74752, ...}) = 0
  futex(0x901aa4, FUTEX_WAKE, 2147483647) = 0
  stat64("/usr/lib/kde3/libkpdfpart.so", {st_mode=S_IFREG|0755, st_size=1825940, ...}) = 0
  open("/usr/lib/kde3/libkpdfpart.so", O_RDONLY) = 9
  read(9, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\331"..., 512) = 512
Comment 1 Bram Schoenmakers 2007-05-24 23:02:02 UTC
Can not reproduce.
Comment 2 Roberto Ragusa 2007-06-24 19:34:15 UTC
The problem disappeared after upgrading to Fedora 7 (kdegraphics-3.5.6-3.fc7).
The strace is very similar, but the stat64("libkpdfpart") in the cwd is missing.

Comment 3 Pino Toscano 2007-11-16 23:03:50 UTC
Cannot reproduce.
The report cannot as well, so closing.