Thanks for getting back so fast Jay.  I looked at your CVS snapshot and 
I agree that it will fix the problem I observed.  Do you have plans for 
a release soon?
wcn

On 03/17/2010 10:36 PM, Jay Sorg wrote:
> If I remember right, there was a bug in the parameters that has been
> fixed since.
> Lets try the cvs version or I have a tar ball here
> http://server1.xrdp.org/xrdp/xrdp-cvs-03-17-2010.tar.gz
>
> Thanks
> Jay
>
>    
>> I found a problem that caused the pointer sent to memcpy to be
>> unaddressable only on 64bit big endian systems.  This function has some
>> arguments backwards and this results in casiting a pointer to an int and
>> then back to a char* later giving an invalid address in the
>> "lib_mod_event" callback.  I've corrected the arguments to the function,
>> and the call to the callback.
>> This function is static and therefore has no declaration in a header,
>> which may be why it evaded detection.
>>
>> I think this change belongs in the products source but I'm not a CVS
>> committer so its up to someone greater than me...
>> Please send me some feedback about this.
>> Wendell Nichols
>>
>> Before my change:
>> static int APP_CC
>> xrdp_wm_process_channel_data(struct xrdp_wm* self, int channel_id,
>>                               char* data, int data_len)
>> {
>>   if (self->mm->mod != 0)
>>    {
>>      if (self->mm->mod->mod_event != 0)
>>      {
>>        self->mm->mod->mod_event(self->mm->mod, 0x5555, channel_id,
>> (long)data,
>>                                 data_len, 0);
>>      }
>>    }
>>    return 0;
>> }
>>
>>
>> After my change:
>> /******************************************************************************/
>> static int APP_CC
>> xrdp_wm_process_channel_data(struct xrdp_wm* self, int channel_id,
>>                                  int data_len, char*data)
>>
>> {
>>   if (self->mm->mod != 0)
>>    {
>>      if (self->mm->mod->mod_event != 0)
>>      {
>>        self->mm->mod->mod_event(self->mm->mod, 0x5555, channel_id,
>> (long)data_len,
>>                                 data, 0);
>>      }
>>    }
>>    return 0;
>> }
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> I found a "fix" for this but I cannot explain why it is working as it is:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> In vnc.c the function
>>
>> int DEFAULT_CC
>> lib_mod_event(struct vnc* v, int msg, long param1, long param2,
>>                long param3, long param4)
>> {
>>
>> gets called with different arguments on my x86 linux box vs my zLinux
>> os390 box:
>> on zlinux the size is in param3 and data is in param4.  On x86 its the
>> other way around.  I swapped the way the parms were used on zlinux to
>> mkake it work and it does work but I don't see why there is a
>> difference.  I'll have to get both systems breakstopped and th
>>      
>    

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
xrdp-devel mailing list
xrdp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xrdp-devel

Reply via email to