Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 362 of 808  Not logged in ELOG logo
ID Date Icon Author Author Email Category OS ELOG Version Subjectdown
  66661   Thu Jan 7 21:22:09 2010 Reply Aaron Coutureacouture@lanl.govBug reportLinuxrev2280Re: Problem with CRYPT+SSL and elog command line entries

I Aaron Couture wrote:

I have attached a possible patch--basically pirated from elogd.c  Because strlcpy needed for the crypt cares about size, do_crypt needed the size, which had not been a concern for base64_encode in elog.c   As a result, base64_encode changed slightly as well.  I think the implementation places a limit of 32 characters on passwords, which seemed to already be the limit in elogd.c  The elog.c limit appeared to be 80 characters.  I tested both SSL and SSL+CRYPT for commandline elog entries with both a logbook specific write password as well as username/password combo in a password file.

 

AJC

 

 

I am in the process of setting up a new ELOG logbook.  I checked out rev2280 from svn.savannah.psi.ch.  I knew I wanted to encrypt passwords, so when I compiled, I used flags

 

USE_SSL=1

and

USE_CRYPT=1

 

I am running Red Hat enterprise linux 3, glibc-devel-2.3.2-95.50, openssl-devel-0.9.7a-33.25

Everything seemed to be working fine--I was able to set up logbooks using both a password file as well as write passwords and make entries to the logs.  Then I tried to use the command line 'elog' to make an entry which failed to both logbooks.

 

/opt/elog/pro/elogd -c /opt/elog/pro/dansce_fancy.cfg -l Demo1 -w <mypassword>

Would change the password in dansce_fancy.cfg and I could make entries through the web interface, but

 

elog -h acouture -s -p 8081 -w <mypassword> -l Demo1 -a Author="Aaron Couture" -a Type=Routine  -m Sampleinfo.txt -x -n 1

failed with

Error: Invalid user name or password

I got the same behaviour when I used a logbook with a user/password pair defined in a password file.

 

When I looked at the output from running elogd with the -v flag, I could see that everything was being received on the server side, but that the password did not agree with the write password in dansce_fancy.cfg

I then recompiled elog with

USE_SSL=1

USE_CRYPT=

And then the elog command line entries worked, both with write passwords and a password file (after recreating the password file and the write password).  Looking at the elog.c source code, it appears that it does not know to use crypt rather then base64_encode when USE_CRYPT is true.  elogd.c defined different behaviour if USE_CRYPT is defined.

 

Thanks,

 

Aaron Couture

 

 

 

Attachment 1: elogc.patch
64c64
< void base64_encode(char *s, char *d)
---
> void base64_encode(unsigned char *s, unsigned char *d, int size)
66a67
>    unsigned char *p;
68c69
<    pad = 3 - strlen(s) % 3;
---
>    pad = 3 - strlen((char *) s) % 3;
70a72
>    p = d;
86a89,90
>       if (d - p >= size - 3)
>         return;
92a97,106
> void do_crypt(char *s, char *d, int size)
> {
> #ifdef HAVE_CRYPT
>    strlcpy(d, crypt(s, "el"), size);
> #else
>    base64_encode((unsigned char *) s, (unsigned char *) d, size);
> #endif
> }
> 
> 
382c396
<    char str[256], *ph, *ps;
---
>    char str[256], encrypted_passwd[32], *ph, *ps;
422,423c436,437
<       base64_encode(passwd, str);
<       sprintf(request + strlen(request), "wpwd=%s;", str);
---
>       do_crypt(passwd, encrypted_passwd, sizeof(encrypted_passwd) );
>       sprintf(request + strlen(request), "wpwd=%s;", encrypted_passwd);
439,440c453,454
<       base64_encode(upwd, str);
<       sprintf(request + strlen(request), "upwd=%s;", str);
---
>       do_crypt(upwd, encrypted_passwd, sizeof(encrypted_passwd) );
>       sprintf(request + strlen(request), "upwd=%s;", encrypted_passwd);
628c642
<    char host_name[256], boundary[80], str[80], *p, *old_encoding;
---
>    char host_name[256], boundary[80], str[80], encrypted_passwd[32], *p, *old_encoding;
801c815
<       base64_encode(upwd, str);
---
>       do_crypt(upwd, encrypted_passwd, sizeof(encrypted_passwd) );
803c817
<               "%s\r\nContent-Disposition: form-data; name=\"upwd\"\r\n\r\n%s\r\n", boundary, str);
---
>               "%s\r\nContent-Disposition: form-data; name=\"upwd\"\r\n\r\n%s\r\n", boundary, encrypted_passwd);
885,886c899,900
<       base64_encode(passwd, str);
<       sprintf(request + strlen(request), "Cookie: wpwd=%s\r\n", str);
---
>       do_crypt(passwd, encrypted_passwd, sizeof(encrypted_passwd) );
>       sprintf(request + strlen(request), "Cookie: wpwd=%s\r\n", encrypted_passwd);
  66663   Fri Jan 8 18:26:56 2010 Reply Aaron Coutureacouture@lanl.govBug reportLinuxrev2280Re: Problem with CRYPT+SSL and elog command line entries

Aaron Couture wrote:

I Aaron Couture wrote:

There was some sloppiness in the original patch--__USE_XOPEN wasn't defined, but worked when elog wasn't compiled alone.  Now the appropriate ifndef/define statements are in elog.c

 

I have attached a possible patch--basically pirated from elogd.c  Because strlcpy needed for the crypt cares about size, do_crypt needed the size, which had not been a concern for base64_encode in elog.c   As a result, base64_encode changed slightly as well.  I think the implementation places a limit of 32 characters on passwords, which seemed to already be the limit in elogd.c  The elog.c limit appeared to be 80 characters.  I tested both SSL and SSL+CRYPT for commandline elog entries with both a logbook specific write password as well as username/password combo in a password file.

 

AJC

 

 

I am in the process of setting up a new ELOG logbook.  I checked out rev2280 from svn.savannah.psi.ch.  I knew I wanted to encrypt passwords, so when I compiled, I used flags

 

USE_SSL=1

and

USE_CRYPT=1

 

I am running Red Hat enterprise linux 3, glibc-devel-2.3.2-95.50, openssl-devel-0.9.7a-33.25

Everything seemed to be working fine--I was able to set up logbooks using both a password file as well as write passwords and make entries to the logs.  Then I tried to use the command line 'elog' to make an entry which failed to both logbooks.

 

/opt/elog/pro/elogd -c /opt/elog/pro/dansce_fancy.cfg -l Demo1 -w <mypassword>

Would change the password in dansce_fancy.cfg and I could make entries through the web interface, but

 

elog -h acouture -s -p 8081 -w <mypassword> -l Demo1 -a Author="Aaron Couture" -a Type=Routine  -m Sampleinfo.txt -x -n 1

failed with

Error: Invalid user name or password

I got the same behaviour when I used a logbook with a user/password pair defined in a password file.

 

When I looked at the output from running elogd with the -v flag, I could see that everything was being received on the server side, but that the password did not agree with the write password in dansce_fancy.cfg

I then recompiled elog with

USE_SSL=1

USE_CRYPT=

And then the elog command line entries worked, both with write passwords and a password file (after recreating the password file and the write password).  Looking at the elog.c source code, it appears that it does not know to use crypt rather then base64_encode when USE_CRYPT is true.  elogd.c defined different behaviour if USE_CRYPT is defined.

 

Thanks,

 

Aaron Couture

 

 

 

 

Attachment 1: elogc.patch
26a27,30
> #ifndef __USE_XOPEN
> #define __USE_XOPEN             /* needed for crypt() */
> #endif
> 
64c68
< void base64_encode(char *s, char *d)
---
> void base64_encode(unsigned char *s, unsigned char *d, int size)
66a71
>    unsigned char *p;
68c73
<    pad = 3 - strlen(s) % 3;
---
>    pad = 3 - strlen((char *) s) % 3;
70a76
>    p = d;
86a93,94
>       if (d - p >= size - 3)
>         return;
92a101
> 
182a192,201
> 
> void do_crypt(char *s, char *d, int size)
> {
> #ifdef HAVE_CRYPT
>    strlcpy(d, crypt(s, "el"), size);
> #else
>    base64_encode((unsigned char *) s, (unsigned char *) d, size);
> #endif
> }
> 
382c401
<    char str[256], *ph, *ps;
---
>    char str[256], encrypted_passwd[32], *ph, *ps;
422,423c441,442
<       base64_encode(passwd, str);
<       sprintf(request + strlen(request), "wpwd=%s;", str);
---
>       do_crypt(passwd, encrypted_passwd, sizeof(encrypted_passwd) );
>       sprintf(request + strlen(request), "wpwd=%s;", encrypted_passwd);
439,440c458,459
<       base64_encode(upwd, str);
<       sprintf(request + strlen(request), "upwd=%s;", str);
---
>       do_crypt(upwd, encrypted_passwd, sizeof(encrypted_passwd) );
>       sprintf(request + strlen(request), "upwd=%s;", encrypted_passwd);
628c647
<    char host_name[256], boundary[80], str[80], *p, *old_encoding;
---
>    char host_name[256], boundary[80], str[80], encrypted_passwd[32], *p, *old_encoding;
801c820
<       base64_encode(upwd, str);
---
>       do_crypt(upwd, encrypted_passwd, sizeof(encrypted_passwd) );
803c822
<               "%s\r\nContent-Disposition: form-data; name=\"upwd\"\r\n\r\n%s\r\n", boundary, str);
---
>               "%s\r\nContent-Disposition: form-data; name=\"upwd\"\r\n\r\n%s\r\n", boundary, encrypted_passwd);
885,886c904,905
<       base64_encode(passwd, str);
<       sprintf(request + strlen(request), "Cookie: wpwd=%s\r\n", str);
---
>       do_crypt(passwd, encrypted_passwd, sizeof(encrypted_passwd) );
>       sprintf(request + strlen(request), "Cookie: wpwd=%s\r\n", encrypted_passwd);
  66671   Tue Jan 12 12:31:20 2010 Reply Stefan Rittstefan.ritt@psi.chBug reportLinuxrev2280Re: Problem with CRYPT+SSL and elog command line entries

I Aaron Couture wrote:

I have attached a possible patch--basically pirated from elogd.c  Because strlcpy needed for the crypt cares about size, do_crypt needed the size, which had not been a concern for base64_encode in elog.c   As a result, base64_encode changed slightly as well.  I think the implementation places a limit of 32 characters on passwords, which seemed to already be the limit in elogd.c  The elog.c limit appeared to be 80 characters.  I tested both SSL and SSL+CRYPT for commandline elog entries with both a logbook specific write password as well as username/password combo in a password file.

Great! Thanks a lot for your patch. I appreciate if people not only come up with problems, but have already the solution. I committed your patch to the distribution, so it will be included in the next version.

- Stefan

  954   Sun Feb 20 15:30:04 2005 Reply Stefan Rittstefan.ritt@psi.chBug fixLinux2.5.7Re: Problem with 'Show Attributes' option
> There is a problem with the 'Show Attributes' option
> causing the 'Format ...' options to be ignored.
> 
> See attachment for patch.

Thanks a lot. I applied your patch and committed the changes to CVS.
  66712   Thu Feb 18 13:21:15 2010 Reply soren poulsensoren.poulsen@cern.chBug reportLinux2.7.8-2282Re: Problem using attribute type

soren poulsen wrote:

Hi,

This little logbook has a problem:

------------------------

Attributes = Author, Category, Type, Subject, Number

Type Number = numeric

Options Category = General{1}
{1} Options Type = Routine

------------------------

(it was of course more complicated to start with).

When creating a new entry and selecting the Category option, there is a problem with the JavaScript which will populate the Type option.

To avoid the problem, I just comment out the line "Type Number ... "

 

Is this a bug ?

Thanks for your time

Soren

 

(P.S. Using a reserved name as an attribute name is maybe not optimal, but it does not seem to be the  problem).

 

 

 

 

 

 To overcome this problem it is sufficient to switch language from "Language = french" to "Language = english"

It was a mistake not to include the "global" settings in this bug report.

What probably happens is that something in the French translation (accents ?) disturbs the java scripting.

Soren

 

  66713   Thu Feb 18 15:37:07 2010 Reply soren poulsensoren.poulsen@cern.chBug reportLinux2.7.8-2282Re: Problem using attribute type

soren poulsen wrote:

soren poulsen wrote:

Hi,

This little logbook has a problem:

------------------------

Attributes = Author, Category, Type, Subject, Number

Type Number = numeric

Options Category = General{1}
{1} Options Type = Routine

------------------------

(it was of course more complicated to start with).

When creating a new entry and selecting the Category option, there is a problem with the JavaScript which will populate the Type option.

To avoid the problem, I just comment out the line "Type Number ... "

 

Is this a bug ?

Thanks for your time

Soren

 

(P.S. Using a reserved name as an attribute name is maybe not optimal, but it does not seem to be the  problem).

 

 

 

 

 

 To overcome this problem it is sufficient to switch language from "Language = french" to "Language = english"

It was a mistake not to include the "global" settings in this bug report.

What probably happens is that something in the French translation (accents ?) disturbs the java scripting.

Soren

 

 To use "Language = french" it is necessary to remove or substitute the accent character ' with something else in eloglang.french and then the Javascript code works again.

Soren

  66749   Fri Mar 12 09:27:25 2010 Reply Stefan Rittstefan.ritt@psi.chBug reportLinux2.7.8-2282Re: Problem using attribute type

soren poulsen wrote:

soren poulsen wrote:

soren poulsen wrote:

Hi,

This little logbook has a problem:

------------------------

Attributes = Author, Category, Type, Subject, Number

Type Number = numeric

Options Category = General{1}
{1} Options Type = Routine

------------------------

(it was of course more complicated to start with).

When creating a new entry and selecting the Category option, there is a problem with the JavaScript which will populate the Type option.

To avoid the problem, I just comment out the line "Type Number ... "

 

Is this a bug ?

Thanks for your time

Soren

 

(P.S. Using a reserved name as an attribute name is maybe not optimal, but it does not seem to be the  problem).

 

 

 

 

 

 To overcome this problem it is sufficient to switch language from "Language = french" to "Language = english"

It was a mistake not to include the "global" settings in this bug report.

What probably happens is that something in the French translation (accents ?) disturbs the java scripting.

Soren

 

 To use "Language = french" it is necessary to remove or substitute the accent character ' with something else in eloglang.french and then the Javascript code works again.

Soren

Indeed it was the JavaScript line

if (document.form1.Number.value != '- garder les valeurs d'origine -') {

which caused the trouble.  The "'" character closed the string '- garder les valeurs d', which caused an exception. I changed it to

if (document.form1.Number.value != "- garder les valeurs d'origine -") {

and now it should work fine.

  66759   Sun Mar 14 20:57:26 2010 Reply soren poulsensoren.poulsen@cern.chBug reportLinux2.7.8-2282Re: Problem using attribute type

Stefan Ritt wrote:

soren poulsen wrote:

soren poulsen wrote:

soren poulsen wrote:

Hi,

This little logbook has a problem:

------------------------

Attributes = Author, Category, Type, Subject, Number

Type Number = numeric

Options Category = General{1}
{1} Options Type = Routine

------------------------

(it was of course more complicated to start with).

When creating a new entry and selecting the Category option, there is a problem with the JavaScript which will populate the Type option.

To avoid the problem, I just comment out the line "Type Number ... "

 

Is this a bug ?

Thanks for your time

Soren

 

(P.S. Using a reserved name as an attribute name is maybe not optimal, but it does not seem to be the  problem).

 

 

 

 

 

 To overcome this problem it is sufficient to switch language from "Language = french" to "Language = english"

It was a mistake not to include the "global" settings in this bug report.

What probably happens is that something in the French translation (accents ?) disturbs the java scripting.

Soren

 

 To use "Language = french" it is necessary to remove or substitute the accent character ' with something else in eloglang.french and then the Javascript code works again.

Soren

Indeed it was the JavaScript line

if (document.form1.Number.value != '- garder les valeurs d'origine -') {

which caused the trouble.  The "'" character closed the string '- garder les valeurs d', which caused an exception. I changed it to

if (document.form1.Number.value != "- garder les valeurs d'origine -") {

and now it should work fine.

 Thanks a lot for changing that. Now French should work as well.

Soren

ELOG V3.1.5-3fb85fa6