~ubuntu-branches/ubuntu/gutsy/vnc4/gutsy

« back to all changes in this revision

Viewing changes to unix/xc/programs/Xserver/hw/xfree86/xf8_32wid/cfbwid.c

  • Committer: Bazaar Package Importer
  • Author(s): Ola Lundqvist
  • Date: 2006-05-15 20:35:17 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060515203517-l4lre1ku942mn26k
Tags: 4.1.1+X4.3.0-10
* Correction of critical security issue. Thanks to Martin Kogler
  <e9925248@student.tuwien.ac.at> that informed me about the issue,
  and provided the patch.
  This flaw was originally found by Steve Wiseman of intelliadmin.com.
* Applied patch from Javier Kohen <jkohen@users.sourceforge.net> that
  inform the user that only 8 first characters of the password will
  actually be used when typing more than 8 characters, closes:
  #355619.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32wid/cfbwid.c,v 1.1 2000/05/21 01:02:44 mvojkovi Exp $ */
 
2
 
 
3
#include "X.h"
 
4
#include "Xmd.h"
 
5
#include "misc.h"
 
6
#include "servermd.h"
 
7
#include "scrnintstr.h"
 
8
#include "pixmapstr.h"
 
9
#include "resource.h"
 
10
#include "colormap.h"
 
11
#include "colormapst.h"
 
12
 
 
13
#include "mfb.h"
 
14
#define PSZ 8
 
15
#include "cfb.h"
 
16
#undef PSZ
 
17
#include "cfb16.h"
 
18
#include "cfb24.h"
 
19
#include "cfb32.h"
 
20
 
 
21
#include "cfb8_32wid.h"
 
22
 
 
23
static void
 
24
WidFillBox1(DrawablePtr pixWid, DrawablePtr pWinDraw, int nbox, BoxPtr pBox)
 
25
{
 
26
        WindowPtr pWin = (WindowPtr) pWinDraw;
 
27
        cfb8_32WidScreenPtr pScreenPriv = 
 
28
                CFB8_32WID_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
 
29
        unsigned int wid = pScreenPriv->WIDOps->WidGet(pWin);
 
30
 
 
31
        if (wid & 1)
 
32
                mfbSolidWhiteArea((DrawablePtr)pWin, nbox, pBox, GXset, NullPixmap);
 
33
        else
 
34
                mfbSolidBlackArea((DrawablePtr)pWin, nbox, pBox, GXset, NullPixmap);
 
35
}
 
36
 
 
37
static void
 
38
WidCopyArea1(DrawablePtr pixWid, RegionPtr pRgn, DDXPointPtr pptSrc)
 
39
{
 
40
        mfbDoBitbltCopy(pixWid, pixWid, GXcopy, pRgn, pptSrc);
 
41
}
 
42
 
 
43
static void
 
44
WidFillBox8(DrawablePtr pixWid, DrawablePtr pWinDraw, int nbox, BoxPtr pBox)
 
45
{
 
46
        WindowPtr pWin = (WindowPtr) pWinDraw;
 
47
        cfb8_32WidScreenPtr pScreenPriv = 
 
48
                CFB8_32WID_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
 
49
        unsigned int wid = pScreenPriv->WIDOps->WidGet(pWin);
 
50
 
 
51
        cfbFillBoxSolid(pixWid, nbox, pBox, wid);
 
52
}
 
53
 
 
54
static void
 
55
WidCopyArea8(DrawablePtr pixWid, RegionPtr pRgn, DDXPointPtr pptSrc)
 
56
{
 
57
        cfbDoBitbltCopy(pixWid, pixWid, GXcopy, pRgn, pptSrc, ~0L);
 
58
}
 
59
 
 
60
static void
 
61
WidFillBox16(DrawablePtr pixWid, DrawablePtr pWinDraw, int nbox, BoxPtr pBox)
 
62
{
 
63
        WindowPtr pWin = (WindowPtr) pWinDraw;
 
64
        cfb8_32WidScreenPtr pScreenPriv = 
 
65
                CFB8_32WID_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
 
66
        unsigned int wid = pScreenPriv->WIDOps->WidGet(pWin);
 
67
 
 
68
        cfb16FillBoxSolid(pixWid, nbox, pBox, wid);
 
69
}
 
70
 
 
71
static void
 
72
WidCopyArea16(DrawablePtr pixWid, RegionPtr pRgn, DDXPointPtr pptSrc)
 
73
{
 
74
        cfb16DoBitbltCopy(pixWid, pixWid, GXcopy, pRgn, pptSrc, ~0L);
 
75
}
 
76
 
 
77
static void
 
78
WidFillBox24(DrawablePtr pixWid, DrawablePtr pWinDraw, int nbox, BoxPtr pBox)
 
79
{
 
80
        WindowPtr pWin = (WindowPtr) pWinDraw;
 
81
        cfb8_32WidScreenPtr pScreenPriv = 
 
82
                CFB8_32WID_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
 
83
        unsigned int wid = pScreenPriv->WIDOps->WidGet(pWin);
 
84
 
 
85
        cfb24FillBoxSolid(pixWid, nbox, pBox, wid);
 
86
}
 
87
 
 
88
static void
 
89
WidCopyArea24(DrawablePtr pixWid, RegionPtr pRgn, DDXPointPtr pptSrc)
 
90
{
 
91
        cfb24DoBitbltCopy(pixWid, pixWid, GXcopy, pRgn, pptSrc, ~0L);
 
92
}
 
93
 
 
94
static void
 
95
WidFillBox32(DrawablePtr pixWid, DrawablePtr pWinDraw, int nbox, BoxPtr pBox)
 
96
{
 
97
        WindowPtr pWin = (WindowPtr) pWinDraw;
 
98
        cfb8_32WidScreenPtr pScreenPriv = 
 
99
                CFB8_32WID_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
 
100
        unsigned int wid = pScreenPriv->WIDOps->WidGet(pWin);
 
101
 
 
102
        cfb32FillBoxSolid(pixWid, nbox, pBox, wid);
 
103
}
 
104
 
 
105
static void
 
106
WidCopyArea32(DrawablePtr pixWid, RegionPtr pRgn, DDXPointPtr pptSrc)
 
107
{
 
108
        cfb32DoBitbltCopy(pixWid, pixWid, GXcopy, pRgn, pptSrc, ~0L);
 
109
}
 
110
 
 
111
Bool
 
112
cfb8_32WidGenericOpsInit(cfb8_32WidScreenPtr pScreenPriv)
 
113
{
 
114
        cfb8_32WidOps *WIDOps = pScreenPriv->WIDOps;
 
115
 
 
116
        switch (pScreenPriv->bitsPerWid) {
 
117
        case 1:
 
118
                WIDOps->WidFillBox = WidFillBox1;
 
119
                WIDOps->WidCopyArea = WidCopyArea1;
 
120
                break;
 
121
 
 
122
        case 8:
 
123
                WIDOps->WidFillBox = WidFillBox8;
 
124
                WIDOps->WidCopyArea = WidCopyArea8;
 
125
                break;
 
126
 
 
127
        case 16:
 
128
                WIDOps->WidFillBox = WidFillBox16;
 
129
                WIDOps->WidCopyArea = WidCopyArea16;
 
130
                break;
 
131
 
 
132
        case 24:
 
133
                WIDOps->WidFillBox = WidFillBox24;
 
134
                WIDOps->WidCopyArea = WidCopyArea24;
 
135
                break;
 
136
 
 
137
        case 32:
 
138
                WIDOps->WidFillBox = WidFillBox32;
 
139
                WIDOps->WidCopyArea = WidCopyArea32;
 
140
                break;
 
141
 
 
142
        default:
 
143
                return FALSE;
 
144
        };
 
145
 
 
146
        return TRUE;
 
147
}