|
April 2003 Boosting your e3000
productivity Tips on C,
Security Next, we
asked to see the contents of the customers CCXL command file.
In particular we wanted to see exactly how the C compiler was
invoked. Heres what we found: Thus we had determined definitively that no Robelle software was involved in causing the customers problem. Although we had suspected this from the start, it was nice to get verification of it. Nevertheless, as is our wont, we continued to work with the customer, even though this was technically no longer our issue. We next
turned our attention to source code and environmental factors. We
know that the C language does not support default parameters. But we
also know that in HPs implementation default parameters are
supported, at least for system intrinsic calls, via the #pragma
intrinsic declaration mechanism. So we asked the customer if he
had included #pragma intrinsic FOPEN in his source file.
This line of inquiry bore no fruit, however, as the customer assured
us that he had included the correct pragma in his source. In
addition, in our tests we found that omitting the appropriate pragma
statement from our source code resulted in a different compiler error
message from what the customer was seeing: Thus we knew that something about the options in the info string was causing a problem, but which option? From reading the compiler options section of the HP C/iX manuaI it appeared that the customers info string was perfectly valid. So we needed to compare it with something we knew worked. In our development environment we had long ago configured the appropriate default info string in a CI variable that gets set up at login time, and is used in all C compilations. Since everything had been working for us for so long we simply forgot about the info string. When we compared our default info string -Aa +e -DMPEIX -Wc,-w1 with the customers info string, we saw several obvious differences. What turned out to be the crucial difference is that our info string includes the +e argument to the -A option. The C/iX manual describes that argument thusly: Allows the use of extension features, such as long pointers and using the $ character in the identifier name. Apparently, extension features also include support for inserting default parameters, although this isnt explicitly documented. At any rate, once our customer added +e to his info string, all compilations worked without error. Problem solved! The bottom line is that two things must be true in order for C/iX compilations to support default parameters in MPE intrinsic calls: 1) The
intrinsics must be declared via the #pragma intrinsic
mechanism FTP Passwords
with Vesofts Security/3000 We use the
session password feature of VESofts Security/3000. One of the
clues was in Security/3000s logfile. Whenever I entered an
invalid password, I could see: Whenever I
entered my password, the login request was rejected, but nothing was
logged. The request was apparently not getting to Security/3000. I
changed my password to a temporary 3-character password and was able
to use ftp. The logfile then showed: Login requests have to go through the ftp server and MPEs AIF:PE before getting to Security/3000. I suspect that either ftp server or AIF:PE truncates the password to 8 characters before passing it to Security/3000. We didnt have any password edit mask in Security/3000. I was not able to find the default maximum length but, just for fun, I have been able to enter an 80-character password. So, how do you define a password maximum length? Enter a
$VEPASS-FORBID directive similar to this one in the securcon file:
Copyright The 3000 NewsWire. All rights reserved. |