ReadIRIS Pro 9

By: Scott Doenges - Revised: 2006-05-30 devin

Readiris Pro Iconhttp://www.irislink.com/opt/uk/products/readiris/mac/index.html
  • Readiris will not work unless the license file is in its default location: /Library/Application Support/ in versions through at least 9.0r7 -- somewhere between 9.0r7 and 9.0r13 the licence file appears to have been moved to Readiris 9.0.app/Contents/SharedSupport/.

    This file requires that all users have write access to it (see the next bullet). One possible workaround could be to move the file into /Users/<user>/Library/Application Support/, then a symbolic link or a Finder alias could be made to the file from the original location. (Tests with both a symbolic link and then with a Finder alias show that Readiris fails to launch, with an error that an exception occurred on launch. With the symbolic link it gives an error code of 5000, with the Finder alias the error code is 39.)

    A better option would be for Readiris to take advantage of the Apple-supplied API that allows support files to be found in a number of standard locations, so that admins could move it from a location in the global scope to user space without ill effect. Unfortunately, given that newer versions moved the file from the Library directory to a directory buried within the application itself, it doesn't seem like this is going to happen anytime soon.
     
  • Readiris will also not work unless all users, even non-admin users, have write access to the license file. If the license file doesn't exist when Readiris is launched, it will attempt to create the file, which requires write access to whichever folder your version puts the license file in. This problem can be gotten around by making sure you launch the application and enter the serial number immediately after installing it, as an admin user.

    In a lab environment, having writable files outside of user's home directory is a security concern. Making the license file readable, but not writable, by anyone (mode 644 instead of its default 666), causes Readiris to refuse to launch. It gives an error that an exception occurred at launch (error code 5000). Because Readiris does not work when the file is moved to a template user home folder and linked from its original location via symbolic link or Finder alias, the best workaround is to use a script to copy it from a secure location to /Library/Application Support/ when someone logs in. (The following line in a login perl script does the job: system ditto "<path to writable files directory>/PRIF230451" "/Library/Application Support/PRIF230451"";

    In limited testing it seems like the application never actually writes to this file.

    The best solution would be to allow the application to launch and function with read, but not write, access to the file. Although Apple does provide an API to allow files to be found by the application if they reside in any of a number of different locations, some institutions employ network home directories which have limited storage space. These institutions, if it is safe for them to do so, leave any preference files, license files, or other support files in the global space, where they will only be available on computers that have the application that uses them, and gives users as much space as possible for their documents.

  • The serial number is clearly displayed in the splash screen as Readiris launches.

    This is a problem because it makes it very easy for someone to steal an institution's license(s). There are potentially several thousand people that have accounts on a large institution's lab computers, and any one of them could, as the application launches, write down the serial number for their own use, which defeats the purpose of serialization.

  • The default install is insecure.

    A number of files and folders within the Readiris 9/Images/ folder and the Readiris application bundle itself are installed a world-writable (modes 777 and 666). Changing the mode on these files and folder to 755 and 644 respectively does not seem to affect the function of the software, indicating that they don't actually need to be world-writable.